如何在按下gridview中的按钮时调用方法

时间:2014-01-10 15:44:20

标签: c# asp.net webforms

我在gridview中有一个按钮,当我点击按钮时,我需要获取该按钮的文本值(每行不同)。

我是否可以使用gridview事件,因此我可以获取后面代码中单击的按钮行?

 <asp:GridView ID="gvResults" runat="server" Width="100%" AllowSorting="True" OnSorting="gvResults_Sorting" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField HeaderText="Customer Type">
                    <ItemTemplate>
                        <asp:Button ID="Button1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustType") %>' CommandName="Delete" />
<%--                        <a href="javascript:sendval('<%# DataBinder.Eval(Container.DataItem, "CustType") %>');"><%# DataBinder.Eval(Container.DataItem, "CustType") %></a>--%>
                    </ItemTemplate>
                </asp:TemplateField>

4 个答案:

答案 0 :(得分:4)

您可以使用GridView控件的RowCommand事件。

protected void gvResults_RowCommand(object sender, 
  GridViewCommandEventArgs e)
{
      if (e.CommandName == "Delete")
      {
        // Retrieve the row index stored in the 
        // CommandArgument property.
        int index = Convert.ToInt32(e.CommandArgument);

        // Retrieve the row that contains the button 
        // from the Rows collection.
        GridViewRow row = gvResults.Rows[index];

        // Add your code here
      }
}

您可以将CommandArgument设置为

<asp:Button ID="Button1" 
    runat="server" 
    Text='<%# DataBinder.Eval(Container.DataItem, "CustType") %>' 
    CommandName="Delete"
    CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"  />

绑定事件,如

 <asp:GridView ID="gvResults" OnRowCommand="gvResults_RowCommand"

答案 1 :(得分:0)

代码如下:

在.aspx

<asp:GridView ID="GridView1" Width="100%" AutoGenerateSelectButton="false" runat="server" AllowPaging="true" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound">
                        <Columns>
                            <asp:TemplateField HeaderText="Customer Type">
                                <ItemTemplate>
                                    <asp:Button runat="server" ID="button1" Text='<%#Eval("TenLop") %>' OnClick="Button1_Click" />
                                </ItemTemplate>

                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>

在代码背后

 protected void Button1_Click(object sender, EventArgs e)
    {
        Button button = sender as Button;
        TextBox1.Text = button.Text;
    }

希望得到这个帮助。

答案 2 :(得分:0)

如果您的目的只是获取所单击按钮的Text值,请先添加click事件处理程序,以便在单击该按钮时执行Button1_Click方法:

<asp:Button ID="Button1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustType") %>' OnClick="Button1_Click" />

然后在Text方法中获取Button1_Click值,如下所示:

protected void Button1_Click(object sender, EventArgs e)
{
    // get the clicked button text value
    string buttonText = ((Button)sender).Text;
}

答案 3 :(得分:0)

如果可能,请不要使用DataBinder.Eval,因为这样的表达式是使用反射进行后期绑定的,并且会对性能产生负面影响: -

http://www.devcurry.com/2011/02/how-to-avoid-databindereval-in-aspnet.html

ASP .NET - What's going on behind an Eval()?