Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改网格视图';动态更新数据源_C#_Winforms - Fatal编程技术网

C# 更改网格视图';动态更新数据源

C# 更改网格视图';动态更新数据源,c#,winforms,C#,Winforms,我有两个DataTable,我想用作GridView的datasource。当用户单击按钮1时,我需要加载第一个表,而用户单击按钮2则应加载第二个表。我目前的问题是,这些表没有相同的结构(一个表有更多的列),当用户首先单击button1并在单击button2后,第二个表加载了正确的值,但它也显示了table1中的额外列 解决此问题的最简单方法是什么?不要手动添加列,而是将属性设置为true。这将导致网格根据数据源创建列 要在Habib答案上展开一点: private void LoadTable

我有两个
DataTable
,我想用作
GridView
datasource
。当用户单击
按钮1
时,我需要加载第一个表,而用户单击
按钮2
则应加载第二个表。我目前的问题是,这些表没有相同的结构(一个表有更多的列),当用户首先单击
button1
并在单击
button2
后,第二个表加载了正确的值,但它也显示了
table1
中的额外列


解决此问题的最简单方法是什么?

不要手动添加列,而是将属性设置为true。这将导致网格根据数据源创建列

要在Habib答案上展开一点:

private void LoadTables()
{
    // Mock the tables data
    DataTable dt1 = new DataTable();
    DataTable dt2 = new DataTable();

    // Clear data from gridview
    GridView1.DataSource = null;
    GridView1.DataBind();

    // Load first table
    GridView1.DataSource = dt1;
    GridView1.DataBind();

    // Clear data from gridview
    GridView1.DataSource = null;
    GridView1.DataBind();

    // Load second table
    GridView1.DataSource = dt2;
    GridView1.DataBind();
}
如果是WinForms,则它将是DataGridView,而不是GridView,它是与WPF不同的控件。请对这些东西要精确,否则你会弄错的!如果
DataGridView.AutoGenerateColumns
的结果足够好,那么就完成了。如果没有,你就必须编写你需要的代码。