2012-02-20 14 views
3

早上好,ASP.NET - 检测中继器中的更改值?

我有一个带中继器的页面。中继器通常包含250-500行。

ItemTemplate包含5个TextBox控件和1个DropDownList。用户可以修改任何这些值。

修改一个或多个值(一行或多行)后,用户将点击'保存'按钮。此时我想更新数据库 - 但首先我需要确定已更改的行。

我已经试验了TextBox.TextChange事件......但是我有5个TextBox控件每行...我不想更新同一个项目五次...所以我正在寻找更好的东西。

如果有一个RepeaterItem.SomeValueChanged事件会很好......但到目前为止我还没找到一个! :-)

任何人都有一个更优雅的解决方案?

谢谢!

格伦

+0

如果您使用'GridView'代替默认包含的'Repeater'控件... – balexandre 2012-02-20 14:52:05

+0

@balexandre,你确定吗? – 2012-02-20 15:12:20

+0

@balexandre - 我确定有其他(也许更好)的方法来实现这一点(将来我们可能会尝试DataGridView),但现在我正在寻找一种使用Repeater实现这一点的方法。谢谢! – 2012-02-20 15:18:00

回答

0

有一个隐藏字段,以反映的值会告诉你事情有了变化。初始数据绑定将其值设置为0.为文本框布线一些js,以便他们用1更新隐藏字段。然后在btn保存事件中,您只需要仅对那些具有1的项目感兴趣。

+0

我实际上需要比较每个控件(TextBox/DropDownList)的BEFORE和AFTER值...所以这不适用于我。然而,我并没有清楚地说明原来的问题(我应该),我认为你的建议很有意义,所以我将你的建议标记为'已接受'的答案。感谢您花时间阅读我的问题并提供解决方案! – 2012-02-20 16:37:25

+0

这可能是个不错的主意,但是u cn在视图状态下存储列表。 T类应该标记为可序列化 – deostroll 2012-02-20 16:47:32