为什么我的datagridview单元格中的一个单元格中的每个数据行后面都有很多空格,这些行数据来自数据库?

时间:2019-07-06 04:58:07

标签: c# sql-server winforms datagridview

我将数据插入了SQL Server数据库Leyte

using (SqlConnection myConnection = new SqlConnection(con))
{
    myConnection.Open();

    SqlDataAdapter adapt = new SqlDataAdapter("select prov_name from tbl_CoopList", con);

    DataTable dt = new DataTable();
    adapt.Fill(dt);

    dgv_CoopList.DataSource = dt;

    myConnection.Close();
}

问题出在运行时,在datagridview中,当我双击单元格时,它有很多空格,例如:

 "Leyte (and a lot of spaces)".

即使我有以下代码,我也一直在尝试解决如何使每个单元格的数据文本居中的问题:

dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

我希望结果与我在SQL Server数据库中插入的结果相同。我怎么可能擦除所有空白,使其自动居中。

2 个答案:

答案 0 :(得分:1)

我可以肯定地说是因为您已将数据库列类型声明为CHAR(或NCHAR)而不是VARCHAR(或NVARCHAR)

CHAR是固定长度的数据类型。如果将一列声明为CHAR(10),然后插入值foobar(6个字符),然后再查询它,则将得到箭头之间的所有内容:

>foobar    <

这是您的foobar的六个字符加上4个空格,以使CHAR(10)最多十个字符

将您的数据库列转换为VARCHAR(或NVARCHAR)

答案 1 :(得分:0)

this.DataGridView.Columns[2].DefaultCellStyle.WrapMode = DataGridViewTriState.True;         
this.DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;         
this.DataGridView.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

希望这会对您有所帮助。