Программно добавить ButtonColumn в GridView из DataTable
У меня проблема с добавлением столбца с кнопками в GridView.
Как видно из приведенного ниже кода, источником данных из GridView является DataTable. Мне нужно добавить дополнительный столбец в таблицу с помощью кнопки.
Из приведенного ниже кода я получаю сообщение об ошибке:
Значение типа "System.Windows.Forms.DataGridViewButtonColumn" нельзя преобразовать в "System.Web.UI.WebControls.DataControlField".
Dim dt_AllGroupsSetUp2 As New DataTable()
dt_AllGroupsSetUp2.Columns.Add("Name", Type.GetType("System.String"))
dt_AllGroupsSetUp2.Columns.Add("Age", Type.GetType("System.String"))
dt_AllGroupsSetUp2.Columns.Add("Hight", Type.GetType("System.String"))
For i As Integer = 0 To 7
dt_AllGroupsSetUp2.Rows.Add()
dt_AllGroupsSetUp2.Rows(i)(0) = "John"
dt_AllGroupsSetUp2.Rows(i)(1) = 10
dt_AllGroupsSetUp2.Rows(i)(2) = 70
Next
GV_DataByGroupAct.DataSource = dt_AllGroupsSetUp2
Dim buttonColumn As New DataGridViewButtonColumn
buttonColumn.Name = "Button"
GV_DataByGroupAct.Columns.Add(buttonColumn)
GV_DataByGroupAct.DataBind()
Я также попробовал свернуть, но вернул следующую ошибку: "New" не может использоваться в классе, который объявлен "MustInherit".
GV_DataByGroupAct.DataSource = dt_AllGroupsSetUp2
Dim buttonColumn As New DataControlField
GV_DataByGroupAct.Columns.Add(buttonColumn)
GV_DataByGroupAct.DataBind()
Есть идеи?
Спасибо
3 ответа
В приведенном ниже коде используйте это перед привязкой данных к GridView (но это C#):
GV_DataByGroupAct.Columns.Add(new ButtonField() { Text = "Button" });
Или вы можете подготовить GridView с полем кнопки
<asp:GridView ID="GV_DataByGroupAct" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Age" HeaderText="Age" />
<asp:BoundField DataField="Hight" HeaderText="Hight" />
<asp:ButtonField Text="Button" />
</Columns>
</asp:GridView>
после привязки у вас будет такой результат:
Я действительно усложнял вещи. Благодаря Jenda, легче подготовить вид сетки. Следующие работы, если это кому-то помогает:
<asp:GridView ID="GV_DataByGroupAct" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Age" HeaderText="Age" />
<asp:BoundField DataField="Hight" HeaderText="Hight" />
<asp:ButtonField Text="Button" />
</Columns>
</asp:GridView>
Код:
Dim dt_AllGroupsSetUp2 As New DataTable()
dt_AllGroupsSetUp2.Columns.Add("Name", Type.GetType("System.String"))
dt_AllGroupsSetUp2.Columns.Add("Age", Type.GetType("System.String"))
dt_AllGroupsSetUp2.Columns.Add("Hight", Type.GetType("System.String"))
For i As Integer = 0 To 7
dt_AllGroupsSetUp2.Rows.Add()
dt_AllGroupsSetUp2.Rows(i)(0) = "John"
dt_AllGroupsSetUp2.Rows(i)(1) = 10
dt_AllGroupsSetUp2.Rows(i)(2) = 70
Next
GV_DataByGroupAct.DataSource = dt_AllGroupsSetUp2
GV_DataByGroupAct.DataBind()
DataGridViewButtonColumn предназначен для использования в элементе управления DataGridView.
С GridView вы можете использовать ButtonField.