当前位置:编程学习 > C#/ASP.NET >>

Repeater + CheckBox 的问题?

目的: 对于用户选中的记录, 进行删除操作

思路: 获取用户选中的记录ID值, 然后依次删除(如果思路不对, 欢迎大家给点意见)

问题: 如何设置并获取CheckBox的ID值呢?



HTML Code

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
    <tr bgcolor="#FFFFFF">
      <td align="center"> </td>
      <td height="30" align="center"><%# ReplaceOut(Eval("RefNo").ToString())%></td>
      <td align="center"> </td>
      <td align="center"> </td>
      <td align="center"> </td>
      <td align="center"> </td>
      <td align="center"><asp:CheckBox ID="ProductID" runat="server"></asp:CheckBox></td>
    </tr>
</ItemTemplate>
</asp:Repeater>

C# Code

for (int i = 0; i < Repeater1.Items.Count; i++)
{
   CheckBox myProductID = (CheckBox)Repeater1.Items[i].FindControl("ProductID");
   if (myProductID.Checked == true)
   {
      // 这里我只做到了这一步, 判断哪一个被选中, 但是如何获取ID值呢? 还没实现
      Response.Write("123");
   }
} --------------------编程问答-------------------- 知道选的是哪一行就获取该行的键值啊. --------------------编程问答-------------------- 主键绑定到id上

<asp:CheckBox ID="<%#Eval("id")%>" runat="server"> </asp:CheckBox> --------------------编程问答--------------------
引用 2 楼 shuihan20e 的回复:
主键绑定到id上 

<asp:CheckBox ID=" <%#Eval("id")%>" runat="server"> </asp:CheckBox>


这样写, 不行啊

服务器标记的格式不正确。 --------------------编程问答--------------------
引用 1 楼 xie_yanke 的回复:
知道选的是哪一行就获取该行的键值啊.


如何设置和获取呢? 能详细点吗? --------------------编程问答-------------------- 可以用隐藏的标签记录键值

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("productid") %>' Visible="false"></asp:Label>
        <asp:Label ID="Label2" runat="server" Text='<%# Eval("productname") %>'></asp:Label>
        <asp:CheckBox ID="CheckBox1" runat="server" />
        <br />
    </ItemTemplate>
</asp:Repeater>
<br />
<asp:Button ID="Button1" runat="server" Text="删除" OnClick="Button1_Click" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True" ProviderName="System.Data.SqlClient" SelectCommand="select productid, productname from products"></asp:SqlDataSource>


protected void Button1_Click(object sender, EventArgs e)
{
    CheckBox chk;
    foreach (RepeaterItem item in Repeater1.Items)
    {
        chk = item.FindControl("CheckBox1") as CheckBox;
        if (chk != null && chk.Checked)
        {
            Response.Write(((Label)(item.FindControl("Label1"))).Text);
        }
    }
}


--------------------编程问答-------------------- Response.Write(((Label)(item.FindControl("Label1"))).Text);

SQL = "delete from Mac_Product where ID in('我如何将Lablel1中的ID值,全部记录在这里呢') " --------------------编程问答-------------------- HTML Code 

<asp:Repeater ID="Repeater1" runat="server"> 
<ItemTemplate> 
    <tr bgcolor="#FFFFFF"> 
      <td align="center">  </td> 
      <td height="30" align="center"> <%# ReplaceOut(Eval("RefNo").ToString())%> </td> 
      <td align="center">  </td> 
      <td align="center">  </td> 
      <td align="center">  </td> 
      <td align="center">  </td> 
      <td align="center"> <input type="chkbox" name="mychk" values="<%#Eval("id")%>" /> </td> 
    </tr> 
</ItemTemplate> 
</asp:Repeater> 

C# Code 

response.write(request.form["mychk"]); --------------------编程问答-------------------- 如果你的id在数据库里是数字类型

protected void Button1_Click(object sender, EventArgs e)
{
    string idList = string.Empty;
    CheckBox chk;
    foreach (RepeaterItem item in Repeater1.Items)
    {
        chk = item.FindControl("CheckBox1") as CheckBox;
        if (chk != null && chk.Checked)
        {
            idList += ((Label)(item.FindControl("Label1"))).Text + ",";
        }
    }
    Response.Write("delete from Mac_Product where ID in(" + idList.TrimEnd(',')+ ")");
}
--------------------编程问答-------------------- 如果你的id在数据库里是字符类型 
protected void Button1_Click(object sender, EventArgs e)
{
    string idList = string.Empty;
    CheckBox chk;
    foreach (RepeaterItem item in Repeater1.Items)
    {
        chk = item.FindControl("CheckBox1") as CheckBox;
        if (chk != null && chk.Checked)
        {
            //字符类型
            idList += "'" + ((Label)(item.FindControl("Label1"))).Text + "',";
        }
    }
    Response.Write("delete from Mac_Product where ID in(" + idList.TrimEnd(',') + ")");
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 加一问题,用JQuery/javascript做“全选”和"反选“功能。。呵呵。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,