У меня проблема с EditItemTemplate.
Я пытаюсь обновить TextBox txt_name
, но я не могу получить то, что пользователь вводит, и вместо этого я получаю старое значение в коде позади.
Я что-то упустил?
ПЕРЕДНИЙ КОД
<asp:GridView ID="GridView_account" runat="server" AutoGenerateColumns="false" ShowFooter="True"
OnRowCancelingEdit="GridView_account_RowCancelingEdit" OnRowEditing="GridView_account_RowEditing"
OnRowUpdating="GridView_account_RowUpdating" OnRowCommand="GridView_account_RowCommand"
OnRowDeleting="GridView_account_RowDeleting" OnSelectedIndexChanged="GridView_account_SelectedIndexChanged"
DataKeyNames="UID" Height="110px" Width="497px">
<Columns>
<asp:TemplateField HeaderText="UID" SortExpression="UID">
<ItemTemplate>
<asp:Label ID="label_accid" runat="server" Text='<%# Bind("UID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="User Name (required)" SortExpression="NyA">
<EditItemTemplate>
<asp:TextBox ID="txt_name" runat="server" Text='<%# Bind("NyA") %>'/>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txt_newname" runat="server"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="label_name" runat="server" Text='<%# Bind("NyA") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email Address (required)" SortExpression="eMail">
<EditItemTemplate>
<asp:TextBox ID="txt_email" runat="server" Text='<%# Bind("eMail") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txt_newemail" runat="server"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="label_email" runat="server" Text='<%# Bind("eMail") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Options" ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton_update" runat="server" CausesValidation="True" CommandName="Update"
Text="Update"></asp:LinkButton>
<asp:LinkButton ID="LinkButton_cancel" runat="server" CausesValidation="False" CommandName="Cancel"
Text="Cancel"></asp:LinkButton>
<asp:LinkButton ID="LinkButton_delete" runat="server" CausesValidation="False" CommandName="Delete"
Text="Delete"></asp:LinkButton>
</EditItemTemplate>
<FooterTemplate>
<asp:LinkButton ID="LinkButton_addnew" runat="server" CausesValidation="False" CommandName="AddNew"
Text="Add New"></asp:LinkButton>
</FooterTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton_edit" runat="server" CausesValidation="False" CommandName="Edit"
Text="Edit"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Manage Role" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="Selectbtn" runat="server" CausesValidation="False" CommandName="Select"
Text="Select"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Код позади
protected void GridView_account_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
user u = Business.GetUser(((Label)GridView_account.Rows[e.RowIndex].FindControl("label_accid")).Text);
//HERE'S MY PROBLEM!
u.fullname = ((TextBox)GridView_account.Rows[e.RowIndex].FindControl("txt_name")).Text;
//txt_name is returning the old value and not the one the user has input recently.
Business.UpdateUser(u);
GridView_account.EditIndex = -1;
fillgridview();
}//