在Databind之后获取gridview列的索引

时间:2012-03-06 03:49:05

标签: asp.net sql-server-2005 c#-4.0

我对网格视图所做的是..根据ma数据库我已经在数据表中添加了列,之后我将它绑定到gridview。,

这是代码,

///在此处获取活动以绑定到GridView以获取第一列的活动。

    Dt = BlObj.BlDynamic_Table("[USP_DynamicGridView]", 2);
    DtOperation = BlObj.BlDynamic_Table("[USP_DynamicGridView]", 1);
    for (int i = 0; i < DtOperation.Rows.Count; i++)
    {
        Dt.Columns.Add(DtOperation.Rows[i][0].ToString());
    }
    dgrDynamic.DataSource = Dt;
    dgrDynamic.DataBind();

但对我来说需要的是获取列索引..这里是代码

private int GetColumnIndexByName(int p)

{
    return ((int)GetColumnName(BlObj.BlDynamic_Table("[USP_DynamicGridView]", 
    4, p).ToString()));
}

private int GetColumnName(string name)
{
    foreach (DataColumn col in dgrDynamic.Columns)
    {
        int Index = 0;
        if(col.Equals(name.ToLower().Trim()))
       // if (col.Name.ToLower().Trim() == name.ToLower().Trim())
        {
            return Index;
        }
        Index += 1;
    }

    return -1;
}

问题是foreach循环不起作用..

我对.NET更新鲜,我也不知道我是否采用了正确的方式..有人可以帮助我吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

以下是我的表现:

private int GetColumnIndex(GridView gv, string columnName, int columnCount)
{
    for (int i = 0; i < gv.Columns.Count; i++)
        if (gv.Columns[i].HeaderText == columnName)
            return i - columnCount + 1;
    throw new Exception("no such column '" + columnName + "'");
}

它适用于我的代码库。

答案 1 :(得分:0)

使用以下函数获取列索引:

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; 
    }