【问题标题】:How to bind Dataset to DataGridView in windows application如何在 Windows 应用程序中将 Dataset 绑定到 DataGridView
【发布时间】:2012-06-21 09:54:25
【问题描述】:

我已经创建了 Windows 应用程序。在此,我在数据集中有多个表,现在我想将其绑定到单个 DataGridView。有人可以帮帮我吗?

【问题讨论】:

标签: c#


【解决方案1】:

以下将显示一个数据集表

DataGridView1.AutoGenerateColumns = true;
DataGridView1.DataSource = ds; // dataset
DataGridView1.DataMember = "TableName"; // table name you need to show

如果要显示多个表,则需要从所有表中创建一个数据表或自定义对象集合。

如果两个表具有相同的表架构

dtAll = dtOne.Copy(); // dtOne = ds.Tables[0]
dtAll.Merge(dtTwo); // dtTwo = dtOne = ds.Tables[1]

DataGridView1.AutoGenerateColumns = true;
DataGridView1.DataSource = dtAll ; // datatable

对所有表格进行模式化的示例代码

DataTable dtAll = ds.Tables[0].Copy();
for (var i = 1; i < ds.Tables.Count; i++)
{
     dtAll.Merge(ds.Tables[i]);
}
DataGridView1.AutoGenerateColumns = true;
DataGridView1.DataSource = dtAll ;

【讨论】:

  • 不错!只有DataGridView1.AutoGenerateColumnstrue 默认情况下,除非有人明确将其设置为false。您无需在此处再次将其设置为true,如上面的代码 sn-p 所示。
  • 一个问题,请将AutoGenerateColumns 设置为false 我可以像我们在datatabledatagridview 中所做的那样,这样我就可以从datatset 获取值并分配给datagridview 中的特定列吗? Mygrid.Columns["Mydridcolumn"].DataPropertyName = dt.Columns["SEQ"].ColumnName;
【解决方案2】:

像这样使用:-

gridview1.DataSource = ds.Tables[0]; <-- Use index or your table name which you want to bind
gridview1.DataBind();

希望对你有帮助!!

【讨论】:

  • 但是使用这种方式我们只能绑定单个表我想绑定所有表。
  • @sonal 所有这些表都具有相同的架构吗?
  • @Damith 是的,所有的架构都相同
【解决方案3】:

这在 asp.net 中对我有用

dgHistory.DataSource = ds.Tables[0]; // dgHistory is the datagrid
  
dgHistory.DataBind();

【讨论】:

    【解决方案4】:

    您可以将数据集设置为网格,如下所示:

    //假设你的数据集对象是ds

    datagridview1.datasource= ds;
    datagridview1.datamember= tablename.ToString();
    

    tablename 是要在网格上显示的表格的名称。

    希望对你有帮助。

    B.R.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      相关资源
      最近更新 更多