日期:2014-05-17  浏览次数:20663 次

关于删除数据的问题
<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"]);
------解决方案--------------------
探讨

引用:

你在获取了选中的CheckBox以后
可以这样:

int id = int.parse(CheckBox.Attributes["get"]);

可是关键问题是checkbox在显示控件中,而删除按钮不在显示控件中,这样点击删除按钮,我尝试了好几种方法,都没有找到这个checkbox

------解决方案--------------------
我通常执行这种删除操作的时候,我习惯在前端用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);
}

------解决方案--------------------
探讨

我通常执行这种删除操作的时候,我习惯在前端用javascript来判断选中的checkbox,获取绑定的id值,再用逗号或其他符号进行分隔放到HiddenField,然后执行删除操作时去取HiddenField中