加载应用程序后DataGrid为空

时间:2014-10-29 19:46:22

标签: c# wpf datagrid

我有DataGrid包含DataBase表信息(访问是否重要)。

到目前为止,我已经完成了数据网格工作与数据库,但有按钮(显示,添加,删除和编辑),但现在,我想删除按钮并仅使用dataGrid执行所有这些功能。

当我在没有点击的情况下执行show按钮时(在wpf加载时自动执行)它显示数据表但是当我尝试设置标题列时它向我显示DataGrid为null(当这些dataGrid显示为&时)来自数据库的表格和正确的信息)。我想得到这个问题的帮助。感谢' S

代码:

try
{
    DataBaseIkuns.Instance.OpenConnectionWithDB();
    DataBaseIkuns.Instance.LoadDataFromDB(DictionaryUtilsDB.dictioneary[DictionaryUtilsDB.CommendTypes.ShowIkuns]);
    dataGridIkuns.ItemsSource = DataBaseIkuns.Instance.dt.DefaultView;
    // ---------------------- Until here it work's perfect - loading the table from the data base with the origin header column 

    DataBaseIkuns.Instance.SetNameOnHeaderColumn(dataGridIkuns); // here it fall.
    DataBaseIkuns.Instance.CloseConnectionWithDB();
}
catch (Exception ex)
{
    System.Windows.Forms.MessageBox.Show(ex.ToString());
}

internal void SetNameOnHeaderColumn(Microsoft.Windows.Controls.DataGrid dataGridIkuns)
{
    dataGridIkuns.Columns[0].Header = "x"; // Fall because DataGridIkuns colomn count is 0.
    dataGridIkuns.Columns[1].Header = "y";
}

错误:索引超出范围。必须为非负且小于集合参数名称的大小:index

当我点击"显示"按钮它完成了这个功能,它的工作非常完美。但是,当我执行它时,wpf appliaction加载错误。为什么呢?

顺便说一下另一个问题,如果有人知道使用dataGrid(添加,删除和编辑)的工作指南而没有按钮,只有键盘编辑)我很乐意得到它。

1 个答案:

答案 0 :(得分:0)

如果您让网格自动为您生成列,那么可能还没有填充列。在设置ItemsSource时,列自动填充不一定立即发生;它可能会延迟,因为网格从未被测量过,或者因为它还没有数据项。

您可以尝试将来电推迟至SetNameOnHeaderColumn,直到Dispatcher使用BeginInvoke DispatcherPriority.Loaded安排try { DataBaseIkuns.Instance.OpenConnectionWithDB(); DataBaseIkuns.Instance.LoadDataFromDB(/* ... */); var view = DataBaseIkuns.Instance.dt.DefaultView; dataGridIkuns.ItemsSource = view; dataGridIkuns.Dispatcher.BeginInvoke( DispatcherPriority.Loaded, new Action( () => { if (dataGridIkuns.ItemsSource == view) SetNameOnHeaderColumn(dataGridIkuns); })); DataBaseIkuns.Instance.CloseConnectionWithDB(); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.ToString()); }

DataGrid

由于您的问题,以下是一些适用于Tab/Shift+Tab的标准快捷方式:

  • Left/Right - 转到当前行的下一个/上一个单元格,或者转到下一个/上一行
  • Up/Down - 转到当前行的上一个/下一个单元
  • F2 - 转到上一行/下一行
  • F4 - 编辑所选单元格
  • Esc - 打开单元格编辑器下拉菜单(编辑后,如果适用)
  • Del - 取消修改
  • Home/End - 删除当前行(不编辑单元格时)
  • Ctrl+Home/Ctrl+End - 跳转到行中的第一个/最后一个单元格
  • PgUp/PgDn - 跳转到网格中的第一行/最后一行
  • Enter/Shift+Enter - 在视图中向上/向下跳转一个“页面”
  • {{1}} - 如果编辑,则提交当前单元格,然后跳转到next / prev行中的同一列

我不知道插入新行或跳转到新行占位符的任何快捷方式。