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> --------------------编程问答--------------------
这样写, 不行啊
服务器标记的格式不正确。 --------------------编程问答--------------------
如何设置和获取呢? 能详细点吗? --------------------编程问答-------------------- 可以用隐藏的标签记录键值
<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)--------------------编程问答-------------------- 如果你的id在数据库里是字符类型
{
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(',')+ ")");
}
protected void Button1_Click(object sender, EventArgs e)--------------------编程问答-------------------- --------------------编程问答-------------------- 加一问题,用JQuery/javascript做“全选”和"反选“功能。。呵呵。。
{
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(',') + ")");
}
补充:.NET技术 , ASP.NET