gridview控件中的按钮

时间:2008-12-04 20:31:45

标签: asp.net visual-studio-2008 gridview .net-3.5

我有一个gridview控件,显示从DB返回的数据。 gridview的datakey属性绑定到DB的ID列

GV中的每条记录都有2个按钮和一个复选框。单击这些控件中的任何一个时,我想获取单击该行的行并根据单击的控件执行操作。

我希望我可以使用row_command事件来捕获哪个控件被点击但是除非我遗漏了某些东西,否则它不会起作用

4 个答案:

答案 0 :(得分:0)

您是否指定了按钮“CommandNameCommandArgument

答案 1 :(得分:0)

同样的问题可能在于错误的生命周期事件序列。您应该尽快将数据重新绑定到网格中。尝试将数据绑定移至Page_Init事件

答案 2 :(得分:0)

代码背后:

protected void gvCustomers_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("RowSelected"))
    {
        GridViewRow row = (((e.CommandSource) as Button).NamingContainer) as GridViewRow;
        Label label = row.FindControl("lblFirstName") as Label;

        Response.Write(label.Text);
    }
}

这是ASPX视图:

<asp:GridView AutoGenerateColumns="false" ID="gvCustomers" runat="server" OnRowCommand="gvCustomers_RowCommand" >

    <Columns>

        <asp:TemplateField>
            <ItemTemplate>

                <asp:Label ID="lblFirstName" runat="server" Text ='<%# Eval("FirstName") %>' />

           </ItemTemplate>
       </asp:TemplateField>

       <asp:TemplateField>
           <ItemTemplate>
               <asp:Button Text="Select" ID="btn1" runat="server" CommandArgument ='<%# Eval("FirstName") %>' CommandName="RowSelected" />
           </ItemTemplate>
       </asp:TemplateField>

    </Columns>

</asp:GridView>

答案 3 :(得分:0)

<asp:GridView ID="gvProduct" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"OnRowCommand="gvProduct_RowCommand" >
    <Columns>
       <asp:TemplateField>
           <ItemTemplate>
               <asp:ImageButton ID="btnEdit" runat="server" CommandName="EditCommand" Text="Edit" />
           </ItemTemplate>                                         
       </asp:TemplateField>
       <asp:BoundField DataField="ProjectNo" HeaderText="ProjectNo" />
       <asp:BoundField DataField="Date" HeaderText="Date" />
       <asp:BoundField DataField="Shift" HeaderText="شیفت" />
    </Columns>         
</asp:GridView>

这个代码:

protected void gvProduct_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "EditCommand")
    {
        GridViewRow Row = (GridViewRow)((Control)e.CommandSource).NamingContainer;
        int productID = Convert.ToInt32(gvProduct.DataKeys[Row.RowIndex].Value);

        EditFunction(productID);
    }
}

EditFunction是您为所选行设置代码的功能,我将其删除。

你需要这样的东西吗?