关于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