ローカル DB からデータが供給されている Gridview があります。グリッドビューは、行にあるデータを編集できるように設定されています。ただし、データを編集しようとすると、テキストの末尾に空白が追加されます。
そのため、「Tom」のような名前を編集すると、テキスト ボックスには「Tom........」と表示され (ドットはスペースのふりをします)、バックエンドもそれを受け取ります。
理由が分からないようです。コードは以下のとおりです。
<asp:GridView ID="gvActiveStudents" runat="server" OnRowDeleting="gvActiveStudents_RowDeleting" OnRowCancelingEdit="gvActiveStudents_RowCancelingEdit"
OnRowEditing="gvActiveStudents_RowEditing" OnRowUpdating="gvActiveStudents_RowUpdating" AutoGenerateEditButton="true" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" CommandName="Delete" Text="Inactive" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="StudentID" HeaderText="Student ID" ReadOnly="true" />
<asp:BoundField DataField="FirstName" HeaderText="First Name" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" />
</Columns>
</asp:GridView>
C#
protected void gvActiveStudents_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvActiveStudents.EditIndex = -1;
getStudents();
}
protected void gvActiveStudents_RowEditing(object sender, GridViewEditEventArgs e)
{
gvActiveStudents.EditIndex = e.NewEditIndex;
getStudents();
}
解決策: RowEditing でスペースを削除する
string firstname = ((TextBox)gvActiveStudents.Rows[index].Cells[3].Controls[0]).Text.TrimEnd();
((TextBox)gvActiveStudents.Rows[index].Cells[3].Controls[0]).Text = firstname;
string lastname = ((TextBox)gvActiveStudents.Rows[index].Cells[4].Controls[0]).Text.TrimEnd();
((TextBox)gvActiveStudents.Rows[index].Cells[4].Controls[0]).Text = lastname;