2012-03-06 3 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(); 

하지만 나를 필요에 대한

내가이야 .. 여기에 .. 열 인덱스를 얻는 것입니다 코드 문제가 작동하지 않는 foreach 루프는 무엇

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

에게 있습니다 더 신선합니다.. 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 루프가 왜 난 그게 전부라고 생각하고 있지 않다 즉 수석 잘 작동하지 않습니다. –

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이 비어 있지 않습니다. –

관련 문제