C# Gridview OnRowCommand事件未触发

C# Gridview OnRowCommand事件未触发,c#,asp.net,gridview,C#,Asp.net,Gridview,我有以下gridview: <asp:Panel ID="pnlScroll" runat="server" ScrollBars="Auto"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:GridView ID="GVCart2" runat="server" AutoGenerateColumns=

我有以下gridview:

<asp:Panel ID="pnlScroll" runat="server" ScrollBars="Auto">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:GridView ID="GVCart2" runat="server" AutoGenerateColumns="False" GridLines="Vertical" onrowcommand="CartUpdate">
                <AlternatingRowStyle BackColor="#CCCCCC" />
                <Columns>
                    <asp:BoundField DataField="Product_Name" HeaderText="Product Name" />
                    <asp:BoundField DataField="Product_ID" HeaderText="Product ID" />
                    <asp:BoundField DataField="ItemQTY" HeaderText="ItemQTY" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="IncreaseCartQty" runat="server" CommandArgument="<%#((GridViewRow)Container).RowIndex %>" CommandName="IncreaseCartQty" Text="+" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Price" HeaderText="Price" />
                    <asp:BoundField DataField="TotalPrice" HeaderText="TotalPrice" />
                </Columns>
                <FooterStyle BackColor="#CCCCCC" />
                <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
                <SortedAscendingCellStyle BackColor="#F1F1F1" />
                <SortedAscendingHeaderStyle BackColor="#808080" />
                <SortedDescendingCellStyle BackColor="#CAC9C9" />
                <SortedDescendingHeaderStyle BackColor="#383838" />
            </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>
    </asp:Panel>
我想在gridview onrow命令上调用的函数是:

public void CartUpdate(object sender, GridViewCommandEventArgs e)
        {
            CartDT = (DataTable)Session["cart"];
            if (e.CommandName == "IncreaseCartQty")
            {
                DataRow DR = CartDT.NewRow();
                int rowIndex = Convert.ToInt32(e.CommandArgument.ToString());
                int qty = Convert.ToInt32(CartDT.Rows[rowIndex][2].ToString());
                DR[0] = CartDT.Rows[rowIndex][0];
                DR[1] = CartDT.Rows[rowIndex][1];
                DR[2] = ++qty;
                DR[3] = CartDT.Rows[rowIndex][3];
                DR[4] = qty * double.Parse(CartDT.Rows[rowIndex][3].ToString());
                CartDT.Rows.RemoveAt(rowIndex);
                CartDT.Rows.InsertAt(DR, rowIndex);
                CartDT.AcceptChanges();
                Session["cart"] = CartDT;
                GVCart2.DataSource = CartDT;
                GVCart2.DataBind();
                TotalOrderAmt();
                TotalItemsCount();
            }

        }
计算订单金额和物料计数的功能如下:

 public void TotalOrderAmt()
        {
            double t = 0;
            for (int i = 0; i < CartDT.Rows.Count; i++)
            {
                t = t + double.Parse(CartDT.Rows[i][4].ToString());
            }

            Session["TotalOrderAmt"] = t;
        }

        public void TotalItemsCount()
        {
            double t = 0;
            for (int i = 0; i < CartDT.Rows.Count; i++)
            {
                t = t + double.Parse(CartDT.Rows[i][4].ToString());
            }

            Session["ItemsCount"] = t;
        }
public void TotalOrderAmt()
{
双t=0;
对于(int i=0;i
现在我无法理解为什么OnRowCommand事件是不触发的。单击gridview中的按钮时未发生任何操作


请告诉我到底哪里错了。

您遇到的问题是页面加载方法。因为您需要Ispostback方法

更换(参见下面的代码)

为此(请参见下面的代码)

如果您不使用
!Ispostback
方法,它抛出一个错误,并且不执行Onrowcommand参数

我希望这有帮助

编辑:

public void CartUpdate(object sender, GridViewCommandEventArgs e)
        {
            CartDT = (DataTable)Session["cart"];
            if (e.CommandName == "IncreaseCartQty")
            {
                DataRow DR = CartDT.NewRow();
                int rowIndex = Convert.ToInt32(e.CommandArgument.ToString());
                int qty = Convert.ToInt32(CartDT.Rows[rowIndex][2].ToString());
                DR[0] = CartDT.Rows[rowIndex][0];
                DR[1] = CartDT.Rows[rowIndex][1];
                DR[2] = ++qty;
                DR[3] = CartDT.Rows[rowIndex][3];
                DR[4] = qty * double.Parse(CartDT.Rows[rowIndex][3].ToString());
                CartDT.Rows.RemoveAt(rowIndex);
                CartDT.Rows.InsertAt(DR, rowIndex);
                CartDT.AcceptChanges();
                Session["cart"] = CartDT;
                GVCart2.DataSource = CartDT;
                GVCart2.DataBind();
                TotalOrderAmt();
                TotalItemsCount();
            }

        }
需要更多帮助

 protected void Page_Load(object sender, EventArgs e)
    {
      if (Session["ItemsCount"] != null)
      {
       CartDT = (DataTable)Session["cart"];
       GVCart2.DataSource = CartDT;
       GVCart2.DataBind();
      }
    }
 protected void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)
      {
        if (Session["ItemsCount"] != null)
        {
         CartDT = (DataTable)Session["cart"];
         GVCart2.DataSource = CartDT;
         GVCart2.DataBind();
        }
      }
    }