【发布时间】: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>
</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