关于删除数据的问题
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table>
<tr><td>选择</td><td>文件名称</td><td>共享人</td><td>共享时间</td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:CheckBox ID='Check' get='<%#Eval("ID") %>' runat="server" />
</td>
<td><%#Eval("_subject")%></td><td><%#Eval("_person")%></td><td><%#Eval("_time")%></td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
上面是我用repeater做的一个显示共享列表,现在问题是怎么才能在选择checkbox之后,点击删除按钮,就可以删除文件了,我要的就是一个思路。
我的想法是这样的,在点击了删除按钮之后,会提交form到后台,这样就能在后台找到对应项,进行删除,可是问题时,后台获取到的只是选中了的checkbox,而且,没有其他信息,我要根据ID进行删除啊!!!!怎么才能在共享文件的ID。
------解决方案--------------------你在获取了选中的CheckBox以后
可以这样:
int id = int.parse(CheckBox.Attributes["get"]);
------解决方案--------------------
------解决方案--------------------我通常执行这种删除操作的时候,我习惯在前端用javascript来判断选中的checkbox,获取绑定的id值,再用逗号或其他符号进行分隔放到HiddenField,然后执行删除操作时去取HiddenField中的值。。
如果需要在后台获取,是可以通过Attributes来实现的,如下代码所示:
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<div>
<asp:CheckBox ID="CheckBoxSelect" runat="server" get='<%#Eval("ID") %>' Text='<%#Eval("ID") %>' />
</div>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(i);
}
Repeater1.DataSource = dt;
Repeater1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
foreach (RepeaterItem item in Repeater1.Items)
{
CheckBox CheckBoxSelect = item.FindControl("CheckBoxSelect") as CheckBox;
if (CheckBoxSelect.Checked)
{
sb.AppendFormat("{0},", CheckBoxSelect.Attributes["get"]);
}
}
Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), string.Format("alert('{0}');", sb.ToString()), true);
}
------解决方案--------------------