2012-03-06 96 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