asp.net - Asp:Repeater Datasouce - 中继器内的数据表复选框。删除当前行
问题描述
找不到类似的东西。该页面有一个Repeater,数据源是一个数据表。页面中的行被添加到数据表中,然后Repeater 被更新并显示在页面上。例如,用户添加了不正确的信息,需要通过在复选框中打勾来从中继器中删除某些内容。如果选中复选框,则应从数据源中删除所选数据(数据表中的一行)并更新Repeater。这如何实施以及是否有可能?我的代码:
<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
<ContentTemplate>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:TableCell Width="80px" BackColor="#e3a99a" HorizontalAlign="Right">
<asp:CheckBox ID="cb_GetOut" runat="server" AutoPostBack="true" Checked="false" Text="DeleteRow" style="padding-right:5px" />
</asp:TableCell>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
dtTest_add.Columns.AddRange(New DataColumn(3) {New DataColumn("text1"), New DataColumn("text2"), New DataColumn("text3"), New DataColumn("text4")})
ViewState("dtTest_add") = dtTest_add
Else
dtTest_add = ViewState("dtTest_add")
Repeater1.DataSource = TryCast(ViewState("dtTest_add"), DataTable)
Repeater1.DataBind()
End If
End Sub
Protected Sub btn_addTest_Click(sender As Object, e As System.EventArgs) Handles btn_addTest.Click
dtTest_add.Rows.Add(txt1.Text, txt2.Text, txt3.Text, txt4.Text)
dtTest_add = ViewState("dtTest_add")
ViewState("dtTest_add") = dtTest_add
Repeater1.DataSource = TryCast(ViewState("dtTest_add"), DataTable)
Repeater1.DataBind()
UpdatePanel1.Update()
End Sub
Protected Sub Repeater1_ItemCreated(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemCreated
Dim cb_GO As CheckBox = CType(e.Item.FindControl("cb_GetOut"), CheckBox)
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(cb_GO)
End Sub
Protected Sub Repeater1_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
Dim cb_GO As CheckBox = DirectCast(e.Item.FindControl("cb_GetOut"), CheckBox)
cb_GO.Attributes("onclick") = "this.checked = (" + dtTest_add + ").deleteRow(" + CStr(e.Item.ItemIndex) + ");"
End Sub
“btn_addTest”按钮位于不在Repeater 中的表单上。有了它,我将数据添加到数据源。然后更新中继器。
我在这行代码中处理“onclick”复选框事件
cb_GO.Attributes("onclick") = "this.checked = (" + dtTest_add + ").deleteRow(" + CStr(e.Item.ItemIndex) + ");"
有必要从数据表中删除数据,Repeater 将简单地更新。但是,你是怎么做的?无法通过 ItemDataBound 中的中继器访问数据表。
解决方案
推荐阅读
- javascript - Onclick - 显示一个表并隐藏其余表
- kubernetes - 生产中的大三角帆
- java - Mapstruct :有条件地映射字段或忽略
- python-3.x - 数据框中的单个图上的多条线
- javascript - 如何在 HTML Javascript 中填充第三个下拉列表?
- python - 如何在 Django 中获取注册表单的 JSON 响应
- caching - Kubernetes 中每个 pod 的页面缓存大小
- php - 如何在 PHP 中将数组与另一个变量相加
- python - 如何将不同的日期格式转换为一种
- multithreading - Pyspark:多个节点上的多线程