обновление строки gridview только при изменении, javascript не меняет значение :(

У меня есть gridview (ASP.net) внутри панели обновления. У меня также есть кнопка «Сохранить», поэтому, когда я нажимаю «Сохранить», она перебирает все строки представления сетки и передает данные хранимой процедуре для обновления каждой строки. Это было слишком медленно, так как иногда я обновлял базу данных, хотя изменений не происходило.

Я решил добавить поле в свой вид сетки следующим образом:

<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")

Идея заключалась в том, чтобы при изменении он установил значение 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...


person oJM86o    schedule 11.07.2011    source источник
comment
Любые ошибки javascript или другая информация об отладке?   -  person Dave    schedule 11.07.2011
comment
@Dave - Как отображать ошибки JS в IE9. В IE8 они были в строке состояния...   -  person oJM86o    schedule 11.07.2011
comment
Я еще не использую IE9. Может быть, нажать f12 и посмотреть, появятся ли инструменты разработчика?   -  person Dave    schedule 11.07.2011
comment
@Dave - см. обновление выше в моем первоначальном посте ...   -  person oJM86o    schedule 11.07.2011
comment
@Anyone. Кто-нибудь знает, почему значение hiddenfield всегда равно 1, даже если я не меняю значение своего текстового поля?   -  person oJM86o    schedule 11.07.2011


Ответы (2)


getElementById, последняя буква D в нижнем регистре.

person Brian Mains    schedule 11.07.2011
comment
Это определенно одна часть исправления, но проблема в том, что значение скрытого поля всегда равно 1. Независимо от того, внесу ли я изменения в поле или нет :(... - person oJM86o; 11.07.2011

Теперь он работает внезапно, кажется, он не работает для любого текстового поля, связанного с календарем (ajax). Итак, я избавился от rowdatabound для этого одного поля, и теперь он работает... странно.

person oJM86o    schedule 11.07.2011