【问题标题】:Can't move data from a DataTable to a DataGridView无法将数据从 DataTable 移动到 DataGridView
【发布时间】:2012-08-24 15:05:42
【问题描述】:

数据到达 DataTable(11 列和 3 行),但是当我尝试让它到达 DataGridView 时,没有成功(没有错误,只是一个空的“DataGridView”)。以下是相关代码的一部分:

DataGridView SecuritiesGridView1 = new DataGridView();
BindingSource bindingSource1 = new BindingSource();
SecuritiesGridView1.DataSource = bindingSource1;

String connectionString = "Data Source=|DataDirectory|\\PersonalFinanceDB.sdf;Encrypt Database=True;Persist Security Info=True";

SqlCeDataAdapter dataAdapter = new SqlCeDataAdapter(DBcommand, connectionString);

DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;

bindingSource1.DataSource = table;
SecuritiesGridView1.DataSource = bindingSource1;
dataAdapter.Fill(table);

MessageBox.Show("Number of columns of table: " + table.Columns.Count.ToString());  // Returns 11
MessageBox.Show("Number of rows of table: " + table.Rows.Count.ToString());  // Returns 3

MessageBox.Show("Number of rows of grid: " + SecuritiesGridView1.RowCount.ToString());  // Returns 0
MessageBox.Show("Number of columns of grid: " + SecuritiesGridView1.ColumnCount.ToString());  // Returns 0

有人知道我可能做错了什么吗?

【问题讨论】:

  • 我没有看到任何将BindingSource 连接到DataTable 的东西
  • 尝试在DataSource的设置之前移动dataAdapter.Fill(table)?
  • 您的代码示例中仍然缺少某些内容。如果我设置了一个非常相似的示例,但实际上是在表单上显示网格,则数据会正确加载和显示。这基本上也是 MSDN 描述如何将 datagridview 绑定到绑定源 msdn.microsoft.com/en-us/library/fbk67b6z.aspx

标签: c# winforms datagridview ado.net datatable


【解决方案1】:

不管怎样填表,都需要将DataGridView绑定到DataTable。

类似:

BindingSource myBindingSource = new BindingSource();
myDataGridView.DataSource = myBindingSource;
DataView myDataView = new DataView(myDataTable);
myBindingSource = myDataView;

应该可以解决问题。

然后您可以通过更改视图来过滤数据,如果这是您想要做的,通过执行以下操作:

myDataView.RowFilter = (Dessert = 'Ice Cream');

或类似的东西,DataGridView 将被过滤到该视图。

【讨论】:

  • Winforms 绑定太麻烦了
【解决方案2】:

首先填充数据表“表”,然后将绑定源分配给SecuritiesGridView1,然后调用函数SecuritiesGridView1.DataBind();

【讨论】:

  • Winforms DataGridView 没有 DataBind 方法。你在想 ASP.Net 吗?
  • 上述代码运行良好。在运行时检查您的数据表并确保其中存在数据。
【解决方案3】:

在表格填满数据后,您必须调用SecuritiesGridView1.DataBind()。

【讨论】:

  • Winforms DataGridView 没有 DataBind 方法。你在想 ASP.Net 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
相关资源
最近更新 更多