2014-01-23 37 views
0

我需要將gridview中的字段轉換爲下拉列表, 但我需要在代碼隱藏中執行此操作,並且我無法在apsx中添加templatefield(但它可以在運行時執行時創建.. ) 我填充我的網格,此代碼:將gridview字段轉換爲下拉列表

 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

我無法添加couse,我的列是基於數據庫生成的,因此當包含/更新/刪除任何數據時,列將會更改。 .. – user3224194

回答

0

它看起來像所有你需要做的是動態創建一個模板字段,並把它添加到GridView。

​​

之後,在創建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); 
     } 
    }