如何在ASP GridView中放置一列Button?

时间:2015-07-29 18:18:58

标签: c# asp.net button gridview datacolumn

我对ASP.Net很陌生,而且我已经打了一个墙。我将我的GridView绑定到TableAdapter - 该部分工作正常 - 我想添加一个包含按钮的列,所有这些按钮都使用相同的文本。

这是我的aspx片段,它创建了GridView:

   <asp:GridView ID="LSResultsGrid" runat="server" CellPadding="3" CellSpacing="5">
   </asp:GridView>

以下是我在C#代码中尝试做的事情:

    LSResultsAdapter = new LSResultsTableAdapter();
    LSResultsAdapter.CreateQualificationSamples(QualID, 0);

    LSResultsGrid.DataSource = LSResultsAdapter.GetLSSampleData(1);

    Button b = new Button();
    b.Text = "Show";

    DataColumn col = new DataColumn("Reps", typeof(Button));
    col.DefaultValue = b;

    var lsResultsTable = ((QCServer.HVIMillData.LSResultsDataTable)LSResultsGrid.DataSource);
    lsResultsTable.Columns.Add(col);

    LSResultsGrid.DataBind();

如果我删除&#34; typeof(按钮)&#34;来自DataColumn构造函数的参数,然后我的表显示新列 - 但按钮上的文本是&#34; System.Web.UI.WebControls.Button&#34 ;;如果我保留此处所示的参数,则该列根本不会出现(没有抛出异常)。

谢谢,任何可以伸出援手的人。

1 个答案:

答案 0 :(得分:1)

有几种方法可以在gridview中添加按钮。您的方法可行,只需将col.DefaultValue = b;更改为col.DefaultValue = b.Text;,但这对初学者来说是一种困难的方法。

在标记本身中可以实现几种更简单的方法:在gridview内部,您可以添加: 类型1:

<Columns>
<asp:CommandField ShowSelectButton="True" SelectText="Show" />
</Columns>

类型2:

<Columns>
<asp:TemplateField>
<HeaderTemplate> My Action
</HeaderTemplate>
<ItemTemplate>
<asp:Button ID="showbtn" runat="server" text="Show"  CommandArgument='<%#Eval("Reps")%>' OnClick="showbtn_Click" />
</ItemTemplate>
</asp:TemplateField>

使用第二种类型的按钮,构建一个匹配OnClick="showbtn_Click"的方法,该方法将在单击按钮时执行所需的操作。与第一种方法相同。

这是第三种类型,如果您真的必须从代码隐藏中进行,请将按钮字段添加到网格中,而不是数据表:

    ButtonField col = new ButtonField();
    col.ButtonType = ButtonType.Button;
    col.DataTextField = ("Reps"); //or whatever bound column you want to show.
    LSResultsGrid.Columns.Add(col);

希望这有帮助!