C# GridView按钮字段后面的命令

C# GridView按钮字段后面的命令,c#,.net,asp.net,gridview,buttonfield,C#,.net,Asp.net,Gridview,Buttonfield,我问了一个关于GridView中按钮字段(图像类型)后面的命令的问题 得到了一个名为gvIngevuld的GridView,其中我显示了数据行和1个ButtonField行。 现在我必须把代码放在这些按钮后面(每个按钮都是一样的),以便将一些东西转换成PDF格式。 问题是我不知道如何将代码放在这些按钮后面? 我的守则如下: <asp:ButtonField ButtonType="Image" ImageUrl="~/Images/pdf.png" CommandName="pdf_cl

我问了一个关于GridView中按钮字段(图像类型)后面的命令的问题

得到了一个名为gvIngevuld的GridView,其中我显示了数据行和1个ButtonField行。 现在我必须把代码放在这些按钮后面(每个按钮都是一样的),以便将一些东西转换成PDF格式。 问题是我不知道如何将代码放在这些按钮后面? 我的守则如下:

<asp:ButtonField ButtonType="Image" ImageUrl="~/Images/pdf.png"  CommandName="pdf_click" />

谢谢。

您应该使用gridview事件的
row命令。将commandArgument设置为项目的唯一键。(默认情况下,它传递行的索引)

此外,如果您已经设置了gridview的
DataKeyNames
,则可以按如下方式访问它:

    int index = Convert.ToInt32(e.CommandArgument);
    int ServerID = Convert.ToInt32(GridView1.DataKeys[index].Value);

CommandName属性未定义要调用的方法。为此,您需要创建一个绑定到控件的命令事件的方法。
恐怕我不太了解GridView,但我认为最简单的方法是在Visual Studio的设计视图中选择它,转到属性,单击事件按钮(看起来像闪电),然后双击RowCommand事件属性。这将自动创建绑定到命令按钮事件的方法。

然后,您可以使用GridViewCommandEventArgs参数访问CommandName、CommandArgument和CommandSource属性,以确定触发事件的按钮。

只是一个补充,我编写并尝试了完全相同的按钮,但按钮仍然不起作用

…过了一段时间我才意识到我忘了一件事,那就是
OnRowCommand=“\u RowCommand”

在**.cs*文件中的GridView元素内部

尝试将CommandName更改为onclick,看看是否可以修复它。此外,可能需要向其中添加runat=“server”。我知道我们做了一个隐藏按钮,但那只是为了我们接线的具体方式。
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.
  }  
}   
    int index = Convert.ToInt32(e.CommandArgument);
    int ServerID = Convert.ToInt32(GridView1.DataKeys[index].Value);