gridview行只在更改时更新,javascript不会更改值:(

时间:2011-07-11 15:29:03

标签: javascript asp.net vb.net hidden-field

我在更新面板中有一个gridview(ASP.net)。我还有一个“保存”按钮 因此,当我单击“保存”时,它会循环遍历网格视图的所有行,并将数据传递给存储过程以更新每一行。这有点太慢,因为有时我会更新数据库,即使没有发生更改。

我决定在gridview中添加一个字段,如下所示:

<asp:TemplateField>
      <ItemTemplate>
          <input type="hidden" id="hdnIsChanged" runat="server" />
      </ItemTemplate>
 </asp:TemplateField>

也就是说,我添加了一个隐藏字段,其想法是如果我的gridview行中的文本框或下拉值发生了变化,我会用值1更新此隐藏字段。所以我将此添加到我的gvLineItems_RowDataBound事件:

Dim hiddenField As HtmlInputHidden = DirectCast(e.Row.FindControl("hdnIsChanged"), HtmlInputHidden)

    'the line item date
    Dim tLID As TextBox = CType(e.Row.FindControl("txtLineItemDate"), TextBox)
    tLID.Attributes.Add("onchange", "document.getElementById('" + hiddenField.ClientID + "').value=1")

    'the amount field
    Dim ta As TextBox = CType(e.Row.FindControl("txtAmount"), TextBox)
    ta.Attributes.Add("onchange", "document.getElementById('" + hiddenField.ClientID + "').value=1")

这个想法是onchange它会设置值1.然后在我的保存按钮中我会做一些这样的事情:

  For Each Row As GridViewRow In Me.gvLineItems.Rows

            Dim hiddenField As HtmlInputHidden = DirectCast(Row.FindControl("hdnIsChanged"), HtmlInputHidden)

            If (hiddenField.Value = "1") Then
              'perform the update...

我遇到的问题是当我调试时,我发现hiddenField.Value始终是1,无论我是否更改了文本框中的值。我发现了这个类似的帖子:http://forums.asp.net/t/1592125.aspx/1

这似乎适用于那个人,但对我而言,价值总是1 ......

2 个答案:

答案 0 :(得分:1)

getElementById,小写最后一个D.

答案 1 :(得分:0)

它现在突然工作,似乎与任何与calendarextender(ajax)相关联的文本框都失败了。所以我摆脱了这个字段的rowdatabound,它现在起作用了......奇怪。

相关问题