以编程方式将ButtonColumn从DataTable添加到GridView

时间:2013-09-05 12:29:43

标签: asp.net vb.net 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()

我也试过了folling但是返回了以下错误:'New'不能用于声明为'MustInherit'的类。

    GV_DataByGroupAct.DataSource = dt_AllGroupsSetUp2
    Dim buttonColumn As New DataControlField
    GV_DataByGroupAct.Columns.Add(buttonColumn)
    GV_DataByGroupAct.DataBind()

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:4)

在后面的代码中使用this之前将数据绑定到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>
绑定后你会得到这个结果:

enter image description here

答案 1 :(得分:1)

我真的很复杂。谢谢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()

答案 2 :(得分:0)

DataGridViewButtonColumn旨在用于DataGridView控件。

使用GridView,您可以使用ButtonField