ASP-获取GridRow值/ OnClick方法

时间:2012-03-08 21:00:06

标签: asp.net c#-4.0

我正在开发一个C#/ ASP 4.0项目,我正在尝试制作购物车应用程序。

我的产品页面上有一个显示所有项目的GridView,我希望用户能够点击此GridView中的“添加到购物车”按钮字段,这显然会将一个项目添加到他们的购物车中

我遇到了为gridview实际设置OnClick事件的问题吗?这似乎在属性的“事件”菜单中不可用。另外,我似乎无法弄清楚如何获得特定的行。我有方法这样做......

 int productID = Convert.ToInt32(GridView1.Rows[n].Cells[0].Text);
 AddToCart(productID);

但我不知道如何找出n,或者当他们在gridview中单击ButtonField时如何调用此方法。

4 个答案:

答案 0 :(得分:1)

你可以这样做:

首先,将模板字段添加到gridview:

<asp:TemplateField HeaderText="Add to Cart">
   <ItemTemplate>
         <asp:Button id="bthAddToCart"
              CommandArgument'<%#Eval("ProductID")%>'
               OnClick="bthAddToCart_Click"
               Text="Add to Cart"
              runat="server"/>
   </ItemTemplate>
</asp:TemplateField>

现在,为按钮的Click事件添加处理程序:

protected void bthAddToCart_Click(object sender, EventArgs e)
{

   Button button = (Button)sender;
   int productID = Convert.ToInt32(button.CommandArgument);
   AddToCart(productID);
}

答案 1 :(得分:1)

您可以使用以下模板字段:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand">
<Columns>
    <asp:TemplateField HeaderText="Header Text Here">
        <ItemTemplate>
            CONTROL TO SHOW COLUMN DATA
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Header Text Here">
        <ItemTemplate>
            CONTROL TO SHOW COLUMN DATA
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Header Text Here">
        <ItemTemplate>
            CONTROL TO SHOW COLUMN DATA
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Header Text Here">
        <ItemTemplate>
            CONTROL TO SHOW COLUMN DATA
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderStyle-Width="30px">
        <ItemTemplate>
            <asp:Button ID="btnAddToCart" runat="server" Text="Add To Cart" CommandName="AddToCart"
                CommandArgument='<%# Eval("ProductID") %>' />
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
<EmptyDataTemplate>
    No Data Found.
</EmptyDataTemplate>
</asp:GridView>

然后在您的代码背后:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "AddToCart")
    {
        int ProductID = Convert.ToInt32(e.CommandArgument);
        AddToCart(ProductID);
    }
}

希望这有帮助!祝你好运!

答案 2 :(得分:0)

使用网格视图的OnRowCommand事件。更多详情:here

答案 3 :(得分:0)

您必须为Gridview使用OnRowCommand事件。使用以下代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand">
<Columns>
    <asp:TemplateField HeaderText="Header Text Here">
        <ItemTemplate>
            CONTROL TO SHOW COLUMN DATA
        </ItemTemplate>
    </asp:TemplateField>

<asp:TemplateField HeaderStyle-Width="30px">
        <ItemTemplate>
            <asp:Button ID="btnAddToCart" runat="server" Text="Add To Cart" CommandName="AddToCart"
                CommandArgument='<%# Eval("ProductID") %>' />
        </ItemTemplate>
    </asp:TemplateField>
</asp:GridView>

在C#代码中使用以下代码:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Add To Cart")
    {
        int ProductID = Convert.ToInt32(e.CommandArgument);
        AddToCart(ProductID);
    }
}