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

3

我在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个回答

5
在将数据绑定到 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

我已经修改了代码以使用按钮字段,但新列未出现。 代码:>> GV_DataByGroupAct.DataSource = dt_AllGroupsSetUp2 >> Dim buttonColumn As New ButtonField >> GV_DataByGroupAct.Columns.Add(ButtonColumn) >> GV_DataByGroupAct.DataBind() - Selrac
先尝试添加ButtonColumn。 - Jenda Matejicek
我该如何捕获它的点击事件?(非常感谢) - oo_dev
1
例如: <asp:Button ID="Button1" runat="server" Text="按钮" CommandArgument='<%# Eval("Name") %>' CommandName="Button1Click" OnCommand="Button1_Command"/>在代码后台: protected void Button1_Command(object sender, CommandEventArgs e) { // -- 做一些事情 -- 信息在e.CommandName和e.CommandArgument中 } - Jenda Matejicek

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()

0

DataGridViewButtonColumn是用于DataGridView控件的。

使用GridView时,你可以使用ButtonField


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接