2009-11-18 3 views
1

Один из столбцов GridView должен хранить панель управления (с некоторыми элементами управления внутри). Проблема в том, что код не работает, я имею в виду, что панель не отображается внутри столбца.Панель управления не отображается в столбце GridView

 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

, что, действительно, есть метод Add (String, 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 

В этом примере колонна название «Total» и типа «десятичной» создается.

1

Я не могу точно сказать, что вы пытаетесь сделать точно, но я не думаю, что вы можете создать сетку из элементов управления таким образом. Почему ваша сетка не использует столбец шаблона, а затем настраивает шаблон на основе данных, на которые вы привязываетесь, вместо привязки к предварительно созданному интерфейсу, как вы пытаетесь сделать?

Смежные вопросы