-1

我目前正在编写一个 WinForms 应用程序,我想使用一个DataGridView. 我知道如何绑定DataGridView数据库中的表,如下所示:

using (SqlConnection con = new SqlConnection(WF_AbsPres.Properties.Settings.Default.DbConnectionString))
{
    SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM DevInOut", con);
    SqlCommandBuilder comdBuilder = new SqlCommandBuilder(a);

    DataTable t = new DataTable();
    //t.Locale = System.Globalization.CultureInfo.InvariantCulture;
    a.Fill(t);

    //dataGridView1.AutoGenerateColumns = false;

    bindingSource1.DataSource = t;

    /// bind the grid view with binding source
    dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
    dataGridView1.ReadOnly = true;
    dataGridView1.DataSource = bindingSource1;

    dataGridView1.DataSource = t;
    con.Close();
}

但事情是以这种方式dataGridView显示表格的所有列。我想手动添加 dataGridView 中的列,并将每一列绑定到数据库表中的特定列。这意味着我不希望显示某些列。

我怎样才能做到这一点?谢谢

4

2 回答 2

2

dataGridView您好,您可以使用以下代码来隐藏列:

 for (int i = 0; i < (TotalNumberOfColumnsInYourTable; i++)
        {

            {
                dataGridView1.Columns[i].Visible = false;

            }

        }

            //visible columns
        dataGridView1.Columns["ColumnName"].Visible = true; 

要更改header文本,您可以使用以下命令:

dataGridView1.Columns["OriginalColumnName"].HeaderText = "YourNewName";

如果您只想改进SqlDataAdapter,只需将其更改为:

 SqlDataAdapter a = new SqlDataAdapter("SELECT column1,column2,column3.. FROM DevInOut", con);

但这意味着未来使用未选择的列将无法通过datagridview. 我不会向你推荐它。

于 2013-07-30T05:09:19.727 回答
0

几个选项:

  • 从数据库中仅选择您需要的数据
  • 将数据复制到仅包含您希望显示的列的另一个数据源
  • 自定义网格视图(应该有需要设置为 False 的 AutoGenerateColumns 属性)并为每列手动设置列名
  • 像 Marek 已经建议的那样将一些列设置为不可见
于 2013-07-30T09:19:18.970 回答