2011-02-09 100 views
0

注意:我没有实现上述解决方案,但关闭此问题并接受这个答案,即使你我没有实现。比较旧值与新值并更新

做什么是最好的方法?并且我知道我可以将转发器存储在不同的变种中并进行比较,但我只是想知道优雅的做法。

这里是我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

这是一个总的黑客,我敢肯定有一个更优雅的价值观方式来处理它,但你可以在那里抛出一个隐藏的领域,并使用onchange脚本设置你的表单元素来更新隐藏字段的值。然后检查隐藏字段的值。

希望有人有更好的方式来做到这一点,但如果一切都失败了。

如果你添加一个类的“hiddenIndicator”隐藏字段,并为“causesChanged”你的表单元素,然后下面的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 
    }); 
}) 

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

+0

不知道会在我的情况的工作和我在EditItemTemplate中使用中继器` '/> ` – 2011-02-09 19:16:56