按名称查找GridView列索引的方法

Del*_*rin 20 c# asp.net

我正在尝试编写一个小方法来循环并GridView通过其索引查找列,因为它可以根据可见的内容更改位置.

这是我到目前为止:

private int GetColumnIndexByName(GridView grid, string name)
{
    foreach (DataColumn col in grid.Columns)
    {
        if (col.ColumnName.ToLower().Trim() == name.ToLower().Trim()) return col.Ordinal;
    }

    return -1;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,DataColumn似乎不是正确使用的类型,但我有点迷失在这里我应该做什么.

我只能使用.NET 2.0/3.5.我不能用4.0.

Del*_*rin 35

我想通了,我需要使用DataControlField和稍微不同的语法.

工作版本:

private int GetColumnIndexByName(GridView grid, string name)
    {
        foreach (DataControlField col in grid.Columns)
        {
            if (col.HeaderText.ToLower().Trim() == name.ToLower().Trim())
            {
                return grid.Columns.IndexOf(col);
            }
        }

        return -1;
    }
Run Code Online (Sandbox Code Playgroud)


Dav*_*pko 17

我更喜欢收集迭代,但为什么要花费在这种情况下的开销foreachgrid.Columns.IndexOf调用?只需使用索引遍历数组.

private int GetColumnIndexByName(GridView grid, string name)
{
    for(int i = 0; i < grid.Columns.Count; i++)
    {
        if (grid.Columns[i].HeaderText.ToLower().Trim() == name.ToLower().Trim())
        {
            return i;
        }
    }

    return -1;
}
Run Code Online (Sandbox Code Playgroud)