Программно добавить 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.

Другие вопросы по тегам