我有DataGrid
DataTable
为DataGrid.ItemsSource
。
到目前为止一切正常,数据显示在我想要的DataGrid
中。
现在我想隐藏DataGrid
的一些列。我以前做过这个并且工作正常但不知何故我总是得到一个错误说
“System.ArgumentOutOfRangeException:”索引超出范围。必须是非负数且小于集合的大小。“
我知道这意味着什么,但我不明白为什么会这样。
这是我的代码:
adapter.Fill(datatable);
NameDG.ItemsSource = datatable.DefaultView;
//Hide Column[1]
NameDG.Columns[1].Visibility = Visibility.Hidden;
DataGrid
有超过10列。
感谢您的帮助。
答案 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)
为了关闭这个帖子,我会在找到解决方案后自己回答这个问题。
你可以直接从DataTable
删除列,例如通过这个(感谢无人)
datatable.Columns.Remove(datatable.Columns[0]);
或
AutoGeneratedColumns
DataGrid
事件处理程序
醇>
答案 2 :(得分:0)
你可以尝试
NameDG.Loaded += NameDG_Loaded;
void NameDG_Loaded(object sender, RoutedEventArgs e)
{
NameDG.Columns[1].Visibility = Visibility.Collapsed;
}