2012-03-06 148 views
1

我有一个网格视图。据马数据库中,我已经添加列到数据表,之后我把它绑定到GridView。完成后,数据绑定后,即可获取列索引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,我也不知道我是否遵循正确的方式..任何人都可以帮我吗?

在此先感谢。

回答

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 + "'"); 
} 

它工作在我的代码库。

+0

高级的事情是,我没有得到dgrDynamic.Columns.Count为0 ..为什么如此..我想这就是为什么foreach循环是没有正常工作 – 2012-03-06 04:30:26

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

谢谢高级..但没有得到Gridview.columns.count ..它总是0. bt有DataTable不是空的.. – 2012-03-06 05:27:18

相关问题