2011-07-11 3 views
1

J'ai un gridview (ASP.net) à l'intérieur d'un panneau de mise à jour.J'ai aussi un bouton "Enregistrer" de sorte que lorsque je clique sur "Enregistrer" il parcourt toutes les lignes d'une vue de grille et passe les données à une procédure stockée pour mettre à jour chaque ligne, ce qui était trop lent car parfois je mettrais à jour la base de données même si aucun changement ne se produisait. ajouter un champ dans mon gridview comme ceci:mise à jour gridview ligne seulement quand changé, javascript ne change pas de valeur :(

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

C'est, j'ai ajouté un champ caché et l'idée était que si une zone de texte ou menu déroulant valeur a changé dans mon gridview ligne je mettre à jour ce champ caché avec la valeur 1. Je a ajouté à mon événement 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") 

L'idée était de telle sorte que onchange il fixerait la valeur 1. Ensuite, dans mon bouton Enregistrer que je ferais quelque chose à cet effet:

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... 

la question que j'ai est quand je vois que je debug hiddenField.Value est toujours 1 si je change une valeur dans la zone de texte ou non. J'ai trouvé ce poste similaire: http://forums.asp.net/t/1592125.aspx/1

Il semble fonctionner pour ce gars-là, mais pour moi la valeur est toujours 1 ...

+0

Des erreurs javascript ou d'autres informations de débogage? – Dave

+0

@Dave - Comment afficher les erreurs JS dans IE9. Dans IE8, ils étaient dans la barre d'état ... – oJM86o

+0

Je n'utilise pas encore IE9. Peut-être frapper f12 et voir si elle apporte des outils de développement? – Dave

Répondre

0

Son travail maintenant tous un coup, il semble échouer pour toute zone de texte associée à un calendarextender (ajax). Donc je me suis débarrassé du rowdatabound pour ce seul domaine et ça marche maintenant ... étrange.

1

getElementById, minuscules dernier D.

+0

Ceci est certainement une partie du correctif, mais le problème est la valeur pour le champ caché est toujours 1. Peu importe si je fais une modification au champ ou non: (... – oJM86o

Questions connexes