获取具有给定列标题c#的列的索引

本文关键字:标题 索引 获取 | 更新日期: 2023-09-27 18:29:56

伙计们,我正在尝试获取具有特定列标题的列的索引。到目前为止,我已经到达

int index_of = grid_statement.Columns[the_name].Index;

但它抛出了一个NullReference异常。

有其他方法可以得到那个索引吗?(名称是一个具有列标题的变量)

获取具有给定列标题c#的列的索引

如果您试图按列的名称获取列,那么您的网格为null,或者您的网格中没有名称等于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没有任何列。分配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;