0

ローカル 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;
4

2 に答える 2

0

データベースに保存される前に、編集された値のOnRowUpdatingメソッド呼び出しで。Trim()

于 2013-04-23T02:57:32.500 に答える