当前位置:编程学习 > C#/ASP.NET >>

关于DataTable 购物车内数量+1 -1


 if (Session["car"] == null)
            {
                string sql = "select * from SYS_PRODUCT_CFG where PRODUCT_TYPEID='" + Request.QueryString["gid"] + "'";
                classDb db = new classDb();
                DataTable dt = db.qurey(sql);//dt现在是个数据集
                //=======自定义的表格========
                DataTable mydt = new DataTable();
                DataColumn dc1 = new DataColumn("gid", typeof(string));//编号列
                mydt.Columns.Add(dc1);
                DataColumn dc2 = new DataColumn("gname", typeof(string));//名称列
                mydt.Columns.Add(dc2);
                DataColumn dc3 = new DataColumn("gprice", typeof(string));//价格列
                mydt.Columns.Add(dc3);
                DataColumn dc4 = new DataColumn("gsdiscount", typeof(string));//合计价格
                mydt.Columns.Add(dc4);
                DataColumn dc5 = new DataColumn("gnum", typeof(string));//数量列
                mydt.Columns.Add(dc5);

                foreach (DataRow dr in dt.Rows)//循环dt表里面的所有列给自定义表格每一行赋值
                {
                    DataRow mydr = mydt.NewRow();//创建新行
                    mydr["gid"] = dr["PRODUCT_TYPEID"].ToString();
                    mydr["gname"] = dr["PRO_NAME"].ToString();
                    mydr["gprice"] = dr["PRICE"].ToString();
                    mydr["gsdiscount"] = dr["PRICE"].ToString();
                    mydr["gnum"] = "1";
                    mydt.Rows.Add(mydr);
                }
                Session["car"] = mydt;//把买的商品存储到session中
                this.GridView1.DataSource = mydt;
                this.GridView1.DataBind();

            }

我是这样添加到购物车的
前台代码

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="gid"  Font-Size="12px"
            OnRowDataBound="GridView1_RowDataBound" OnRowDeleting="GridView1_RowDeleting" 
            OnRowUpdating="GridView1_RowUpdating" Width="496px" AllowPaging="True" 
            onpageindexchanging="GridView1_PageIndexChanging" PageSize="7">
            <Columns>
                <asp:TemplateField HeaderText="编号">
                <ItemTemplate>
              <asp:Label runat="server" ID="lbid"  Text='<%# Bind("gid")%>'></asp:Label>
                </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="gname" HeaderText="商品名" />
                <asp:BoundField DataField="gprice" HeaderText="单价" />
                <asp:TemplateField HeaderText="数量">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton2" runat="server" >-</asp:LinkButton>
                      <asp:TextBox ID="TextBox1" runat="server"  
                            ontextchanged="textbox1_TextChanged"   AutoPostBack="true"
                            Text='<%# Bind("gnum") %>' MaxLength="2" Width="25px"></asp:TextBox>
                        <asp:LinkButton ID="LinkButton3" runat="server" onclick="LinkButton3_Click">+</asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="gsdiscount" HeaderText="小计" />
                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                            CommandName="Delete" OnClientClick="return confirm("确定要删除吗");" 
                            Text="删除" ForeColor="#FF9966"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

但是在linkbutton  数量加一减一是出现这样的错误

无法将类型为“System.Web.UI.WebControls.LinkButton”的对象强制转换为类型“System.Web.UI.WebControls.Label”。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidCastException: 无法将类型为“System.Web.UI.WebControls.LinkButton”的对象强制转换为类型“System.Web.UI.WebControls.Label”。

源错误: 


行 195:    protected void LinkButton3_Click(object sender, EventArgs e)
行 196:    {
行 197:        string id = ((((Label)sender).Parent.Parent) as GridViewRow).Cells[0].Text;
行 198:        Response.Write(id);
行 199:    }
 

--------------------编程问答-------------------- 求助  --------------------编程问答-------------------- sender 指的是 LinkButton3 这个链接 为什么要强制成 (Label)sender?
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,