伙计们,我正在尝试获取具有特定列标题的列的索引。直到现在我得
int index_of = grid_statement.Columns[the_name].Index;
但它会引发 NullReference 异常。
还有其他方法可以获取该索引吗?(the_name 是具有列标题的变量)
伙计们,我正在尝试获取具有特定列标题的列的索引。直到现在我得
int index_of = grid_statement.Columns[the_name].Index;
但它会引发 NullReference 异常。
还有其他方法可以获取该索引吗?(the_name 是具有列标题的变量)
如果您试图通过其名称获取列,那么您的网格为空,或者您的网格中没有名称等于的列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;
试试这个它会帮助你
int index_of = grid_statement.CurrentRow.Cells["ColumnName"].ColumnIndex;
您可能正在尝试在绑定数据源之前访问列集合。此时gridview
不会有任何列。分配数据源并绑定网格,然后检查列的索引。
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;