伙计们,我试图获取具有特定列标题的列的索引。 直到现在我必须
int index_of = grid_statement.Columns[the_name].Index;
但它会抛出NullReference异常。
有没有其他方法可以获得该索引? (the_name是具有列标题的变量)
答案 0 :(得分:3)
如果您尝试按名称获取列,则表示网格为空,或者网格中没有名称等于the_name
的列。在这两种情况下,您都无法获得不存在的列的索引。为了避免在没有提供名称的列的情况下发生异常,您可以在尝试获取其索引之前检查列是否存在。
var column = grid_statement.Columns[the_name];
int index_of = column == null ? -1 : column.Index;
如果您尝试通过标题文本(与列名称不同)获取列,则应搜索具有相同标题的列。如果找到了列,请获取它的索引:
var column = grid_statement.Columns
.Cast<DataGridViewColumn>()
.FirstOrDefault(c => c.HeaderText == the_name);
int index_of = column == null ? -1 : column.Index;
答案 1 :(得分:2)
试试这会帮助你
int index_of = grid_statement.CurrentRow.Cells["ColumnName"].ColumnIndex;
答案 2 :(得分:1)
您可能在绑定数据源之前尝试访问columns集合。目前gridview
不会有任何列。分配dataSource并绑定网格,然后检查列的索引。
grid_statement.DataSource = dataTable;
grid_statement.DataBind();
int index_of = grid_statement.Columns[the_name].Index;
为避免异常,您应先检查是否有列,然后获取其索引。
int index_of = -1;
if(grid_statement.Columns[the_name] != null)
index_of = grid_statement.Columns[the_name].Index;