【问题标题】:Save all changes in DataList on button click单击按钮时保存 DataList 中的所有更改
【发布时间】:2013-01-23 15:52:45
【问题描述】:

我有以下DataList-

<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 按钮中的更改。因为如果项目是动态创建的,那么从技术上讲,它们不存在于页面上。我想在 dataList 上的每行没有保存选项的情况下执行此操作。

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

【问题讨论】:

  • 你试过google search吗?看来你还没有自己尝试过关于codebehindstackoverflow.com/questions/11976245/…的任何事情,这是一个开始阅读的地方
  • “因为如果项目是动态创建的,那么从技术上讲,它们不存在于页面上” 这是错误的。像DataList 这样的webdatabound-control 的Template 中的每个控件都会在每次回发时创建和重新创建。它确实存在于页面中。您可以通过DataListItem.FindControl(Id)访问它。
  • 您是说复选框在(取消)检查时已经更新了数据库中的值吗?

标签: c# asp.net web-services datalist


【解决方案1】:

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

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

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

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

将这些存储在一个数组中,并通过网络服务将它们推送到服务器。

【讨论】:

  • 我想我了解您的解决方案将如何工作。因此,如果我标记行已更改,然后在保存按钮中单击,对于已更改的每一行,使用新的用户输入调用 Web 服务更新方法?
  • 好的,我将尝试实现此代码,并确保我将其标记为正确,如果它有效,感谢您的建设性回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2015-05-14
相关资源
最近更新 更多