我用Repeater做了一个类似GridView的分页,第一列是CheckBox,第二列是数据中主键ID直接读取的ID值(int值)在Repeater外面有个删除按钮,但是怎么在删除按钮里的Click事件中找到第二列的ID值哪...我数据库绑定方式是Repeater.DataSource = IList<T>的.

解决方案 »

  1.   

    遍历一个项的时候就获取CheckBox,判断是否选中
    如果选中了就获得ID
    然后再通过ID来删除这一项
      

  2.   

    楼上的用语句表达,我来用代码实现(Repeater没用过,我用GridView来举例)foreach(GridViewRow gvr in GridView1)
    {
        CheckBox cb=gvr.FindControl("CheckBox1") as CheckBox;
        if(ch.Checked)
        {
            int id=Int.Parse(gvr.Cell[1].Text);//这个Id就是你取出来的选中列的Id
            //根据这个Id再做一些删除操作
        }
    }
      

  3.   

    遍历
    foreach (RepeaterItem item in myEquipment.Items)
       if (item.ItemType == ListItemType.AlternatingItem 
           || item.ItemType == ListItemType.Item)
       {
           //你要的操作
       }
      

  4.   

    打错,myEquipment -> myRepeater
      

  5.   

    <li class="title_booklist3" ><asp:Label ID="LoginId" runat="server" Text="<%# DataBinder.Eval(Container.DataItem,"LoginId")%>"></asp:Label></li> 
    这样写就报错
    但是
    <li class="title_booklist3" ><%# DataBinder.Eval(Container.DataItem,"LoginId")%></li> 
    把Label去掉就不报错...
      

  6.   

    Text='<%# DataBinder.Eval(Container.DataItem,"LoginId")%>'
    改成单引号!~~
      

  7.   

    if (this.rpLoginLogList.Items.Count>0)
            {
                int[] num = new int[rpLoginLogList.Items.Count];
                foreach (RepeaterItem ritem in this.rpLoginLogList.Items)
                {
                    CheckBox chx = ritem.FindControl("CheckBox2") as CheckBox;
                    if (chx.Checked)
                    {
                            Label loginid =rpLoginLogList.Items[ritem.ItemIndex].FindControl("LoginId") as Label;
                            int id = Convert.ToInt32(loginid.Text);
                    }
                }
            }
    自己解决了....
    <li class="title_booklist3" ><asp:Label ID="LoginId" runat="server" Text="<%# DataBinder.Eval(Container.DataItem,"LoginId")%>"></asp:Label></li> 
    把Text=''改成单引号就可以了!