要想豁然开朗就请先学HTML和javascript.
谢谢.
谢谢.
解决方案 »
- ItemCommand 后 DataList 样式变了
- 网页优化问题,发言有份
- 急,帮忙看一下这条sql语句
- 找不到类型或命名空间名称“PageChangedEventArgs”(是否缺少 using 指令或程序集引用?)
- 做留言板过程中出现“DB.createcon()”是“方法”,但此处被当做“类型”来使用
- 求助,头疼:如何考察高级系统架构师?
- 求救~~~~有关radio控件 onclick 事件的实现
- asp.net中连接数据库字符串如何不写死它?
- asp.net中如何用键盘响应事件啊(比如说按enter键)
- 小女生初学程序,请教一题~~!~(急..在线等)
- 基于OOXML (Office Open XML)的复杂Excel文件在线输出1(动态复制表单)
- EF多表继承的疑问
这个时候。怎么办?
repeater的使用,先巩固一下基础知识吧
通过各位的回复。基本明确。用我说的方法。前提是id必须是主key。这就是关键,可是很多文章没有说明。所以之前有那样的疑惑。确定了就没了。谢谢~~~
你列出的方法1,2,3 其实本质是一样的
没有你那样设计表的
repeater所有的记录肯定是要有区别的字段 当然你可以在表中设计一下
就算是有 或者你可以通过rpt_topicsList_ItemDataBound改一下 不过这样肯定很笨
数据源无非来自两个方面,或者是List<>一类,或者是DataSet一类,如果是来自于List一类的,也就是说你从数据库取出来的数据已经和某个实体类对应上了,那这个Id就是这个实体类的一个属性;
如果是来自于DataSet一类的,那这个Id就应该是你数据库中的字段名了。再说一下按钮的 CommandArgument和CommandName, 在Repeater的ItemCommand事件中,我们通过判断CommandName来判断是哪个按钮触发了ItemCommand事件,而这个时候e.CommandArgument就是你绑定在触发事件的Button的CommandArgument了,直接按照这个参数做删除就可以了。
在按钮点击事件里写
LinkButton lb=sender as LinkButton;
delete(Convert.ToInt32(lb.commandArgument));
还有个其他的思路供你参考:
在repeater列表的第一列放置单选框,value绑定主键。在repeater下面放置工具栏,工具栏里放一个删除按钮。
当单选框被 选中时,就用js将单选框的主键写到一个隐藏域里,然后点击删除的时候,通过这个隐藏域来获取主键ID。明白?
所以说,如果换成复选框,你可以一次删除多条记录。
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></td>
<td><asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater> protected void LinkButton1_Click(object sender, EventArgs e)
{
int index = ((RepeaterItem)(sender as LinkButton).Parent).ItemIndex;
Label lb = Repeater1.Items[index].FindControl("Label1") as Label;
Response.Write(lb.Text);
}
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></td>
<td><asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" CommandArgument='<%#Eval("Name") %>'>删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater> protected void LinkButton1_Click(object sender, EventArgs e)
{
LinkButton link = sender as LinkButton;
string name = link.CommandArgument;
Response.Write(name);
}
onitemcommand="Repeater1_ItemCommand">
<HeaderTemplate> <table> </HeaderTemplate>
<ItemTemplate>
<tr>
<td> <%#Eval("ID") %> </td>
<td> <asp:Label ID="Label1" runat="server" Text=' <%#Eval("Name") %>'> </asp:Label> </td>
<td>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Deletes" CommandArgument=' <%#Eval("Name") %>'>删除 </asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate> </table> </FooterTemplate>
</asp:Repeater> protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Deletes")
{
Response.Write(e.CommandArgument);
}
}
你没有主键,那么你自己制定一个规则,如何唯一标识一条记录,如果定好了规则,你就把多个值绑定到CommandArgument参数里好了(例如可以用 | 线分割),反正不过是一个字符串标记,你在后台用这个字符串好知道是该去唯一查询到一条记录就可以了!