比较旧值与新值和更新

时间:2011-02-09 18:46:03

标签: asp.net gridview

注意:我没有实现上述解决方案,但即使您没有实施,也要关闭此问题并接受此答案。

最好的办法是什么?而且我知道我可以将转发器存储在不同的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 
        }  
   }

1 个答案:

答案 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
    });
})

我没有测试过该代码,但我曾在项目中使用类似的东西。