【问题标题】:WPF Datagrid column count is 0WPF Datagrid 列数为 0
【发布时间】:2015-05-16 18:33:43
【问题描述】:
 *string connStr = ConfigValues.connectionString;
 string query = "select * from table";
 using (OdbcConnection conn = new OdbcConnection(connStr))
{
   using (OdbcDataAdapter adapter = new OdbcDataAdapter(query, conn))
   {
            ds_sc = new DataSet();
            adapter.Fill(ds_sc);
   }
}

table_sc = ds_sc.Tables[0];
datagrid.ItemsSource = table_sc.DefaultView;

MessageBox.Show("count=" + dgvScripture.Columns.Count().ToString());

datagrid.Columns[1].Visibility = Visibility.Hidden;**

这个 WPF 数据网格有 3 列。 数据网格列数为零,我无法隐藏列 [1]。 稍后我需要在代码中检索第 1 列的值。 我得到的错误是:“索引超出范围” 找不到我缺少的东西

请帮忙!提前致谢

【问题讨论】:

  • 你的问题到底是什么?

标签: wpf wpfdatagrid


【解决方案1】:

如果您使用的是AutoGeneratedColumn,则在您设置ItemSource 后不会立即创建Columns。 DataGrid 对此有 2 个事件

1) 如果您想在创建所有列 时捕捉瞬间,请使用AutoGeneratedColumns 事件

在所有列的自动生成完成时发生。 ... 每次 DataGrid 尝试生成列时都会引发 AutoGeneratedColumns 事件。例如,在初始化 DataGrid、AutoGenerateColumns 设置为 true 或更改 ItemsSource 时引发 AutoGeneratedColumns,即使 ItemsSource 为 null。

2) 如果您想为每个自动生成的列在其创建时执行某些操作,请使用AutoGeneratingColumn event

在自动生成单个列时发生。 ... 您可以更改或取消在 AutoGeneratingColumn 事件处理程序中创建的列。

【讨论】:

  • 非常感谢!!这行得通。我在 AutoGeneratedColumns 事件处理程序中隐藏了列。
  • 我一直在尝试手动设置标题文本和列宽。每次更新数据时,它都会覆盖我的定义。这使我可以在每次更新数据时分配我的定义。谢谢!
【解决方案2】:

调用 LoadingRow 事件,然后隐藏视图。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2014-01-14
  • 2014-04-17
  • 2011-10-09
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多