2014-01-23 3 views
0

gridview의 필드를 dropdownlist 으로 변환해야하지만 codebehind에서이 작업을 수행해야하며 apsx에서 templatefield를 추가 할 수 없습니다 (그러나 런타임 실행시 생성 될 수 있습니다 ..). .)이 코드 내 그리드를 채울 :Gridview 필드를 Dropdownlist로 변환

 foreach (var item in response.Select(x => x.idMatriz).Distinct()) 
     { 
      dr = dt.NewRow(); 
      for (int i = 0; i < colunas; i++) 
      { 
       dr[i] = response.Where(x => x.Propriedade == dt.Columns[i].ToString() && x.idMatriz == item).Select(x => x.Valor).FirstOrDefault(); 
      } 
      dt.Rows.Add(dr); 
     } 

그것은 작동하지만 난이 드롭 다운 될 fileds 필요 .... 어떤 도움을?

+0

왜 마크 업을 수정할 수 없습니까? 이것이 실제로는 이상적인 방법 일 것입니다. 당신이 보여주는 코드는 UI와 관련이없는 것 같습니다 ... – David

+0

내 열이 데이터베이스를 기반으로 생성되므로 열을 추가/삭제/삭제할 때 열이 변경됩니다. .. – user3224194

답변

0

템플릿 필드를 동적으로 만들고 gridview에 추가하면됩니다.

var field = new TemplateField {HeaderText = col.ColumnName} 
gridView.Columns.Add(field); 

그런 다음 gridview의 행 작성 이벤트에서 드롭 다운을 작성하고 연결하십시오.

public void DynamicGridView_RowCreated(object sender, GridViewRowEventArgs e) 
    { 

     if (e.Row.RowType != DataControlRowType.DataRow) 
     { 
      return; 
     } 

     var grid = sender as GridView; 
     if (grid == null) 
     { 
      return; 
     } 

     for (var i = 0; i < grid.Columns.Count; i++) 
     { 
      var column = grid.Columns[i] as TemplateField; 
      if (column == null) 
       continue; 

      var cell = e.Row.Cells[i]; 
      var dropdown = new DropDownList(); 
      cell.Controls.Add(dropdown); 
     } 
    } 
관련 문제