【发布时间】:2012-02-20 14:43:06
【问题描述】:
早安,
我有一个带有中继器的页面。中继器通常包含 250 - 500 行。
ItemTemplate 包含 5 个 TextBox 控件和 1 个 DropDownList。用户可以修改任何这些值。
修改一个或多个值(一行或多行)后,用户将单击“保存”按钮。此时我想更新数据库——但首先我需要识别已更改的行。
我已经尝试过 TextBox.TextChange 事件……但我每行有 5 个 TextBox 控件……我不想将同一个项目更新五次……所以我正在寻找更好的东西。
如果有一个 RepeaterItem.SomeValueChanged 事件那就太好了……但到目前为止我还没有找到一个! :-)
谁有更“优雅”的解决方案?
谢谢!
格伦
【问题讨论】:
-
如果您使用
GridView而不是默认包含的Repeater控件... -
@balexandre,你确定吗?
-
@balexandre -- 我确信还有其他(也许更好)方法可以实现这一点(将来我们可能会尝试 DataGridView)但现在我正在寻找一种方法来实现这一点使用中继器。谢谢!
-
@Adrian -- 这正是我现在正在做的: foreach (RepeaterItem rptItem in rptListItems.Items) { TextBox txtQuantity = (TextBox)rptItm.FindControl("txtQuantity"); HiddenField hidQuantity = (HiddenField)rptItm.FindControl("hidQuantity"); if (string.Compare(txtQuantity.Text.Trim(), hidQuantity.Value.Trim(), true) != 0) { // value has changed
-
@Adrian Iftode - 我将坚持我现在所拥有的 - 主要是因为我的时间很短,需要快速完成这个项目。希望我们能尽快迁移到 .NET 4.0,我将深入研究 LINQ!谢谢你的帮助!!我真的很感激!