C# ASP.NET Gridview编辑文本框在数据末尾添加空格

C# ASP.NET Gridview编辑文本框在数据末尾添加空格,c#,visual-studio-2012,asp.net,C#,Visual Studio 2012,Asp.net,我有一个Gridview,它正在从本地数据库中获取数据。gridview已经设置好,您可以编辑行中的数据。但是,当您尝试编辑数据时,文本中会添加尾随空格 因此,当编辑时,比如说“Tom”,文本框将显示“Tom…”(假设点是空格),这也是后端将接收到的内容 我似乎不明白为什么。代码如下,任何帮助都将不胜感激 <asp:GridView ID="gvActiveStudents" runat="server" OnRowDeleting="gvActiveStudents_RowDeletin

我有一个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>
解决方案:在行编辑中修剪空间

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;

在方法调用中,在编辑的值保存到数据库之前,对其进行
Trim()

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

名字以nchar(10)形式存储在数据库中,值为“Tom”

从返回“Tom”的人员中选择FirstName

从人员返回'Tom'中选择RTRIM(FirstName)

另外,如果按名称绑定到任何对象,请记住为列别名


选择RTRIM(FirstName)作为人物的FirstName

是的,这是我已经做过的,但我想删除之前的空格,它们首先不应该出现在文本框中。它们在db中吗?您还可以在行编辑事件中删除。空格不在DB中。当数据加载并且空格仍然显示时,我调用了trim。如何在行编辑中进行修剪?文本字段中是否有空格,或者文本字段是否与本文中的文本字段一样宽。如果你把光标放在字段中,它就在文本的右边?Nvm,明白了。虽然很长,但它是有效的。字符串名=((文本框)gvActiveStudents.Rows[index]。单元格[3]。控件[0])。Text.TrimEnd();((文本框)gvActiveStudents.Rows[index]。单元格[3]。控件[0])。Text=firstname;
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;