注意:我没有实现上述解决方案,但即使您没有实施,也要关闭此问题并接受此答案。
最好的办法是什么?而且我知道我可以将转发器存储在不同的var中并进行比较,但我只想知道优雅的做法。
这是我想要比较的for loop
代码并更新已更改的值并忽略未更改的值
GridViewRow row = gv.SelectedRow;
Repeater _rpt = gv.Rows[e.RowIndex].Cells[8].FindControl("rptReg") as Repeater;
Repeater _rpt1 = gv.Rows[e.RowIndex].Cells[9].FindControl("rptVisitor") as Repeater;
for (int i = 0; i < _rpt.Items.Count; i++) {
TextBox _txt = _rpt.Items[i].FindControl("txtId") as TextBox;
TextBox _txt1 = _rpt.Items[i].FindControl("txtName") as TextBox;
if (_rpt1.Items.Count > i)
TextBox _txt3 = _rpt1.Items[i].FindControl("txtVisitor") as TextBox;
//update db
}
}
答案 0 :(得分:0)
这是一个彻头彻尾的黑客,我确信有更优雅的方式来处理它,但你可以在那里抛出一个隐藏的字段,并使用onchange脚本设置你的表单元素来更新隐藏字段的值。然后只需检查隐藏字段的值。
希望有人有更好的方法去做,但如果一切都失败了。
如果你将一个类添加到“hiddenIndicator”的隐藏字段和你的表单元素“causeChanged”,那么下面的Jquery应该做你想要的:
$(document).ready(function() {
$('input.causesChanged').change(function() {
$(this)
.closest('tr') // get the parent row
.find("input.hiddenIndicator") // find children that match the selector
.val('1'); //the value that indicates a change occured
});
})
我没有测试过该代码,但我曾在项目中使用类似的东西。