求教。。datalist 里面的 linkbutton 传ID问题。。如下:
我想点击删除的时候通过 事件获取ID="image_id"中的ID值 , 从而执行删除方法,但问题是 所传的值与图片不对应。。每次删除都是最后一个被删 。。 是我获取ID方式不对 ?还是前台的 ID与图片的ID根本就不对应?
前台:
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="10"
Font-Bold="False" Font-Italic="False" Font-Names="华文宋体" Font-Overline="False"
Font-Strikeout="False" Font-Size="Small" Font-Underline="False" HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="image_id" runat="server" Text='<%#Eval("Img_id") %>' Visible="false"></asp:Label>
<a rel="example_group" href="upload/<%#Eval("Image_Art")%>" title="">
<img alt="" src="upload/<%#Eval("Image_small")%>" width="85px" height="85px" /></a><br />
<font style="font-size: small;">
<asp:Label ID="Label3" runat="server" Text='<%#Eval("Image_Art") %>'></asp:Label></font><br />
<asp:LinkButton ID="dec" runat="server" OnClick="LinkButton1_Click">【删除】</asp:LinkButton>
</ItemTemplate>
</asp:DataList>
后台:
protected void LinkButton1_Click(object sender, EventArgs e)
{
foreach (DataListItem item in DataList1.Items)
{
Label lb = item.FindControl("image_id") as Label;
id= lb.Text;
}
this.delPic(id); //执行删除方法
//Response.Write("<script>alert('"+id+"')</script>");
}
------解决方案--------------------先通过查看网页中HTML源代码确认一下,有没有相关的代码<span id="$..$..img_id"> 看看中间的text是不是与对应的图片id对应;
如果看不到,估计是label设置成 不可见 造成的。。
------解决方案--------------------行中放一个隐藏存ID,给LinkButton一个CommandName
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
这里用FindControl去找那个ID
}
或者就给LinkButton一个Command CommandArgumet
CommandArgumet里面存ID。。。事件用LinkButton的Command事件
------解决方案--------------------你那种方法,当然是删除最后一条数据了。
foreach (DataListItem item in DataList1.Items)
{
Label lb = item.FindControl("image_id") as Label;
id= lb.Text;
}
这样这个id是最后一个id,所以你删除的是最后一个。
你可以通过给LinkButton添加CommandArguments属性,属性值为图片id,然后添加OnCommand事件,在事件中来接收这个参数,并进行处理,如下红色标记部分。
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="10"
Font-Bold="False" Font-Italic="False" Font-Names="华文宋体" Font-Overline="False"
Font-Strikeout="False" Font-Size="Small" Font-Underline="False" HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="image_id" runat="server" Text='<%#Eval("Img_id") %>' Visible="false"></asp:Label>
<a rel="example_group" href="upload/<%#Eval("Image_Art")%>" title="">
<img alt="" src="upload/<%#Eval("Ima