单击按钮时保存数据列表中的所有更改
本文关键字:列表 按钮 保存 数据 单击 | 更新日期: 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>
</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 服务将它们推送到服务器。