Dataview不能正确获取datagridview列标题

本文关键字:datagridview 标题 获取 不能 Dataview | 更新日期: 2023-09-27 18:10:30

虽然我在分配给datagridview之前在datatable中设置了一个新的列标题,当我从datagridview调用这个datagridview时,我得到旧的列标题。下面是我的一部分代码:

DataSet ds = new DataSet();
grid.DataSource = null;
ds.ReadXml(path);
var dt = ds.Tables[0];
dt.Columns["Name"].Caption = "Descr";
dt.Columns["Account"].Caption = "ACNT"; // I tried both .Caption and .Columname
grid.DataSource = ds.Tables[0];

我也尝试在实现datagridview后更改列标题,但仍然没有任何结果:

grid.Columns[0].HeaderText = "Descr";

我如何设置一个列标题,以后的dataview可以正确读取它?

Dataview不能正确获取datagridview列标题

您需要设置DataPropertyName,在您的例子中:

dt.Columns["Name"].DataPropertyName = "Name";
dt.Columns["Name"].HeaderText = "Descr";
dt.Columns["Account"].DataPropertyName = "Account";
dt.Columns["Account"].HeaderText = "ACNT";

您可以尝试以下操作:

grid.DataSource = null;

        using (DataSet ds = new DataSet())
        {
                   ds.ReadXml(path);
                   var dt = ds.Tables[0];
                   sda.Fill(dt);
                   //Set AutoGenerateColumns False
                   dataGridView1.AutoGenerateColumns = false;
                   //Set Columns Count
                   dataGridView1.ColumnCount = 3;
                   //Add Columns
                   dataGridView1.Columns[0].Name = "CustomerId";
                   dataGridView1.Columns[0].HeaderText = "Customer Id";
                   dataGridView1.Columns[0].DataPropertyName = "CustomerID";
                   dataGridView1.Columns[1].HeaderText = "Contact Name";
                   dataGridView1.Columns[1].Name = "Name";
                   dataGridView1.Columns[1].DataPropertyName = "ContactName";
                   dataGridView1.Columns[2].Name = "Country";
                   dataGridView1.Columns[2].HeaderText = "Country";
                   dataGridView1.Columns[2].DataPropertyName = "Country";
                   dataGridView1.DataSource = dt;
               }
           }

另一种方法,您可以尝试使用更少的代码行。使用设计视图yourGrid->编辑了列->Data->DataProperty ->(添加您的db列名称)。

一旦完成,你可以调用你的网格。

   private void PopulateGrid()
        {
          
            grid.AutoGenerateColumns = false;
           
            List<Your table> yourTable_List = GetMethodOfTheData();
             var source = new BindingSource(yourTable_List , null);    
            grid.DataSource = source;
        }