C# Gridview OnRowCommand事件未触发
我有以下gridview: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=
<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();
}
}
}