0

我有一个 Gridview,它正在从本地数据库中获取数据。已经设置了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 回答
-1

如果数据库中的数据类型是固定的字符串,例如 nchar,那么您应该在任何时候返回它时 RTRIM() 它,因为 SQL Server 将用空格填充字符串。

FirstName 在数据库中存储为 nchar(10),值为 'Tom'

select FirstName from people returns 'Tom '

select RTRIM(FirstName) from people returns 'Tom'

此外,如果按名称绑定到任何内容,请记住为该列设置别名

select RTRIM(FirstName) as FirstName from people

于 2016-06-09T05:43:24.240 回答