单击按钮时保存数据列表中的所有更改

本文关键字:列表 按钮 保存 数据 单击 | 更新日期: 2023-09-27 17:55:36

我有以下数据列表-

<td>
<asp:Label ID="Label3" runat="server" Text="Exclude"></asp:Label>
<asp:DataList runat="server" ID="excludeTextBox">
<ItemTemplate>
<br />
<asp:TextBox ID="myTextBox" runat="server" Text='<%# Container.DataItem.ToString() %>'></asp:TextBox>&nbsp;

</ItemTemplate>
</asp:DataList>
<td>
<asp:Label ID="Label4" runat="server" Text="Active"></asp:Label>
<asp:DataList runat="server" ID="activeCheck" >
<ItemTemplate>
<br />
<asp:CheckBox ID="CheckBox1" runat="server"  Checked='<%# Container.DataItem.ToString().Equals("1") %>' OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="true" />

</ItemTemplate>
</asp:DataList>
</td>

因此,这将为数据库中退出的每一行生成一个文本框和复选框。

目前没有与 dataList 关联的保存操作,但是如果用户选中或取消选中其中一个复选框,则会调用 Web 服务并切换数据库基表中的值。

我的问题是,在用户编辑了某些文本框中的文本并选中或取消选中某些复选框后,如何捕获save changes按钮中的更改。因为如果项目是动态创建的,那么从技术上讲,它们不存在于页面上。我想这样做,而没有在数据列表上的每一行上都有保存选项。

protected void saveChanges_Click(object sender, EventArgs e)
{
     // capture all edits and call update webservice method.   
}

单击按钮时保存数据列表中的所有更改

您基本上必须构建更改的表示形式。 因为没有通用的解决方案,所以我没有任何代码,但这是过程:

当项目更改时,您必须存储更改的内容。 您可以将实际更改的行的索引存储在页面上的隐藏变量中,或者将更改存储在 JavaScript 对象中。 单击"保存更改"后,然后在客户端上循环访问这些更改,如果存在,则批量发送或一次发送一个更改。

如果您有一个隐藏字段,其值(如 0,2,5)表示每个更改的索引,则可以轻松找到这些项,从表单中获取值,然后将它们发送到 Web 服务。 或者,您可以构建一个具有以下更改的 JavaScript 对象:

{ key: 2, checked: true, text:"My new text" }

将它们存储在数组中,并通过 Web 服务将它们推送到服务器。