我有一个关于 GridView 中 ButtonField(图像类型)后面的命令的问题。
有一个名为gvIngevuld的GridView,我显示数据行和1个ButtonField行。现在我必须将代码放在这些按钮后面(每个按钮都相同)以 PDF 格式放置一些内容。问题是我不知道如何将代码放在这些按钮后面?我有的代码:
<asp:ButtonField ButtonType="Image" ImageUrl="~/Images/pdf.png" CommandName="pdf_click" />
如您所见,我使用了 CommandName="pdf_click" 属性,但是当我单击其中一个按钮时,只有一个回发,但没有任何反应。有人可以在这里帮助我吗?
如果需要,代码隐藏:
protected void pdf_click(object sender, EventArgs e)
{
lblWelkom.Text = "Succes!";
}
谢谢。
您应该使用 gridview RowCommand
事件。将命令参数设置为项目的唯一键。(默认情况下,它传递行的索引)
void gvIngevuld_RowCommand(Object sender, GridViewCommandEventArgs e)
{
// If multiple buttons are used in a GridView control, use the
// CommandName property to determine which button was clicked.
if(e.CommandName=="pdf_click")
{
// Convert the row index stored in the CommandArgument
// property to an Integer.
int index = Convert.ToInt32(e.CommandArgument);
// Retrieve the row that contains the button clicked
// by the user from the Rows collection.
GridViewRow row = gvIngevuld.Rows[index];
//gbIngevuld is your GridView's name
// Now you have access to the gridviewrow.
}
}
此外,如果已设置网格视图的DataKeyNames
,则可以按如下方式访问它:
int index = Convert.ToInt32(e.CommandArgument);
int ServerID = Convert.ToInt32(GridView1.DataKeys[index].Value);
只是一个补充,我编写并尝试了完全相同的方法,但是按钮仍然不起作用......
。过了一段时间,我才意识到我忘记了一件事,那就是 OnRowCommand="<YourGridViewName>_RowCommand"
在 **.cs* 文件中的 GridView 元素内
属性不定义要调用的方法。为此,您需要创建一个绑定到控件的命令事件的方法。
恐怕我对 GridView 不太了解,但我认为最简单的方法是在 Visual Studio 的设计视图中选择它,转到属性,单击事件按钮(看起来像闪电)并双击 RowCommand 事件属性。这应该会自动创建一个绑定到命令按钮事件的方法。
然后,可以使用 GridViewCommandEventArgs 参数访问 CommandName、CommandArgument 和 CommandSource 属性,以确定导致事件触发的按钮。