如何在 ASP GridView 中放置一列 Button?
How can I put a column of Button in an ASP GridView?
我是 ASP.Net 的新手,而且有点碰壁。我将我的 GridView 绑定到一个 TableAdapter——那部分工作正常——我想添加一个包含按钮的列,所有按钮都具有相同的文本。
这是创建 GridView 的 aspx 片段:
<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();
如果我从 DataColumn 构造函数中删除 "typeof(Button)" 参数,那么我的 table 会显示新列——但按钮上的文本是 "System.Web.UI.WebControls.Button";如果我保留此处所示的参数,则该列根本不会出现(没有抛出异常)。
谢谢,谁能伸出援手。
有几种方法可以在 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);
希望对您有所帮助!
我是 ASP.Net 的新手,而且有点碰壁。我将我的 GridView 绑定到一个 TableAdapter——那部分工作正常——我想添加一个包含按钮的列,所有按钮都具有相同的文本。
这是创建 GridView 的 aspx 片段:
<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();
如果我从 DataColumn 构造函数中删除 "typeof(Button)" 参数,那么我的 table 会显示新列——但按钮上的文本是 "System.Web.UI.WebControls.Button";如果我保留此处所示的参数,则该列根本不会出现(没有抛出异常)。
谢谢,谁能伸出援手。
有几种方法可以在 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);
希望对您有所帮助!