2009-11-18 86 views
1

其中一個GridView列必須存儲Panel控件(其中包含一些控件)。問題是,該代碼不起作用,我的意思是,Panel不出現在列中。GridView列中沒有出現Panel控件

 Panel myPanel = new Panel(); 
     LinkButton zatw = new LinkButton(); 
     zatw.CommandName = "Accept"; 
     zatw.Text = "Accept"; 

     LinkButton odrz = new LinkButton(); 
     odrz.CommandName = "Deny"; 
     odrz.Text = "Deny"; 

     myPanel.Controls.Add(zatw); 
     myPanel.Controls.Add(odrz); 

     DataTable DT = new DataTable(); 
     DT.Columns.Add("Options", typeof(Panel)); 

     DataRow myRow = DT.NewRow(); 

     myRow1[0] = myPanel; 

     DT.Rows.Add(myRow1); 
     GridView1.DataSource = DT; 
     GridView1.DataBind(); 
     ... 

回答

1

這是因爲DT.Columns.Add("Options", typeof(Panel));將不接受控件類型作爲第二個參數。

來自文檔。 DT.Columns的類型是

DataColumnCollection

,的確,有一個方法添加(字符串型),你使用它的。但是Type是列數據類型......它不接受控件。

實施例:

Private Sub AddColumn() 
    Dim columns As DataColumnCollection = _ 
     DataSet1.Tables("Orders").Columns 
    Dim column As DataColumn = columns.Add(_ 
     "Total", System.Type.GetType("System.Decimal")) 
    column.ReadOnly = True 
    column.Unique = False 
End Sub 

在這個例子中,正被創建的名稱「合計」的列並輸入「小數」。

1

我不能確切地告訴你想要做什麼,但我不認爲你可以用這種方式創建一個沒有控制的網格。爲什麼沒有你的網格使用模板列,然後根據你綁定的數據調整模板,而不是像你正在嘗試的那樣綁定到預先構建的UI?