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

事は、それがなぜそうなのか.. 0としてdgrDynamic.Columns.Countを取得し、foreachのループである理由私はthatsのだと思うわけではないことであるシニア正しく動作していません。 –

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が空ではありません。 –

関連する問題