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

时间:2013-09-02 09:40:12

标签: c# asp.net datagridview header

伙计们,我试图获取具有特定列标题的列的索引。 直到现在我必须

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

但它会抛出NullReference异常。

有没有其他方法可以获得该索引? (the_name是具有列标题的变量)

3 个答案:

答案 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;