日期:2014-05-18  浏览次数:20513 次

求教。。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