WPF DataGrid ColumnCount

时间:2017-09-04 08:27:07

标签: c# wpf datatable datagrid

我有DataGrid DataTableDataGrid.ItemsSource

到目前为止一切正常,数据显示在我想要的DataGrid中。 现在我想隐藏DataGrid的一些列。我以前做过这个并且工作正常但不知何故我总是得到一个错误说

“System.ArgumentOutOfRangeException:”索引超出范围。必须是非负数且小于集合的大小。“

我知道这意味着什么,但我不明白为什么会这样。

这是我的代码:

adapter.Fill(datatable);
NameDG.ItemsSource = datatable.DefaultView;

//Hide Column[1]
NameDG.Columns[1].Visibility = Visibility.Hidden;

DataGrid有超过10列。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

如果单击列名称,则其具有负值特定值为-1,则需要使用IF STATEMENT验证它

使用此事件来防止错误

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int rowIndex = e.RowIndex;
if(rowIndex <= -1)
 {
 //Error
 }
 else
 {
//Your Code
 }

}

答案 1 :(得分:0)

为了关闭这个帖子,我会在找到解决方案后自己回答这个问题。

  1. 你可以直接从DataTable删除列,例如通过这个(感谢无人)

    datatable.Columns.Remove(datatable.Columns[0]);
    
    1. 使用AutoGeneratedColumns
    2. 中的DataGrid事件处理程序

答案 2 :(得分:0)

你可以尝试

   NameDG.Loaded += NameDG_Loaded;

    void NameDG_Loaded(object sender, RoutedEventArgs e)
    {
        NameDG.Columns[1].Visibility = Visibility.Collapsed;
    }