GridView est NewValues et OldValues vide dans le OnRowUpdating événement
J'ai le GridView ci-dessous. Je suis de liaison à une source de données personnalisée dans le code derrière. Il pénètre dans le "OnRowUpdating" de l'événement, mais il n'y a pas NewValues ou OldValues. Des suggestions quant à la façon dont je peux obtenir ces valeurs?
<asp:GridView ID="gv_Personnel"
runat="server"
OnRowDataBound="gv_Personnel_DataBind"
OnRowCancelingEdit="gv_Personnel_CancelEdit"
OnRowEditing="gv_Personnel_EditRow"
OnRowUpdating="gv_Personnel_UpdateRow"
AutoGenerateColumns="false"
ShowFooter="true"
DataKeyNames="BudgetLineID"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
>
<Columns>
<asp:BoundField HeaderText="Level of Staff" DataField="LineDescription" />
<%--<asp:BoundField HeaderText="Hrs/Units requested" DataField="NumberOfUnits" />--%>
<asp:TemplateField HeaderText="Hrs/Units requested">
<ItemTemplate>
<%# Eval("NumberOfUnits")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tb_NumUnits" runat="server" Text='<%# Bind("NumberOfUnits")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Hrs/Units of Applicant Cost Share" DataField="" NullDisplayText="0" />
<asp:BoundField HeaderText="Hrs/Units of Partner Cost Share" DataField="" NullDisplayText="0" />
<asp:BoundField FooterStyle-Font-Bold="true" FooterText="TOTAL PERSONNEL SERVICES:" HeaderText="Rate" DataFormatString="{0:C}" DataField="UnitPrice" />
<asp:TemplateField HeaderText="Amount Requested" ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"/>
<asp:TemplateField HeaderText="Applicant Cost Share" ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"/>
<asp:TemplateField HeaderText="Partner Cost Share" ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"/>
<asp:TemplateField HeaderText="Total Projet Cost" ItemStyle-HorizontalAlign="Right" FooterStyle-HorizontalAlign="Right" FooterStyle-BorderWidth="2" FooterStyle-Font-Bold="true"/>
</Columns>
</asp:GridView>
OriginalL'auteur Abe Miessler | 2010-03-12
Vous devez vous connecter pour publier un commentaire.
C'est ce que dit un employé de Microsoft dans ici.
Dans ce cas, vous pouvez le faire en utilisant le ExtractValuesFromCell méthode pour faire de la NewValues collection vous-même.
EDIT:
J'ai trouvé un morceau de code dans les commentaires de cette blog:
Nai pas testé, mais semble résoudre le problème, laissez-moi savoir si il l'a fait.
OriginalL'auteur Tony Santos
Je ne sais pas si cela peut aider..mais c'est ce que j'ai trouvé dans msdn site
Je ne suis pas sûr car je n'ai pas essayé, mais la déclaration dit que vous devez utiliser la propriété DataSourceID en liaison avec le contrôle GridView. Je pourrais essayer cela et voir si vous pouvez attribuer un ID à une source de données et à l'engager dans le code derrière. Si pas, je vais essayer les suggestions ci-dessous =)
OriginalL'auteur hallie
Je faisais la liaison de données dans ma événement Page_Load et quand j'ai cliqué sur "mettre à Jour" la Publication a été fait, si c'était l'événement Page_Load de feu. GridView a été rempli avec les valeurs anciennes de nouveau, donc, dans myGrid.RowUpdating cas je ne pouvais pas récupérer de nouvelles valeurs. Si cela permet de
OriginalL'auteur tmjam
Lier à la Page pré-rendu de gestionnaire d'événement comme ceci:
NB: pré-rendu a lieu après la RowUpdating événement.
OriginalL'auteur show
Vous devez vérifier la IsPostback dans le formulaire de charge. Lorsque le contrôle gridview mise à Jour du fait de la publication, il est actualisé avec les anciennes valeurs. Utilisation IsPostback pour éviter cela:
De cette façon, il ne remplace pas le "nouveau" gridview valeurs
OriginalL'auteur Stephen B Craver