Click here to Skip to main content
15,913,303 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I can't load table from Session after selecting the product.
Product.aspx:
ASP.NET
<asp:DataList ID="DataList1" runat="server" Height="176px" 
    HorizontalAlign="Center" RepeatColumns="5" RepeatDirection="Horizontal" 
    Width="16px" onitemcommand="DataList1_ItemCommand">
    <ItemTemplate>
    <asp:Label ID="lblidProduct" runat="server" Text='<%#Eval("idProduct") %>' />
        <br>
        <br></br>
        <asp:Image ID="img" runat="server" height="160px" 
            ImageUrl='<%# "~/Img/" + Eval("image") %>' width="160px" />
        <br>
        <br></br>
        <asp:Label ID="lblten" runat="server" Text='<%#Eval("NameProduct") %>' />
        <br>
        <br></br>
        <a href='Detail.aspx?id=<%#Eval("idProduct") %>'>Detail</a>
        <br>
        <br></br>
         
        <asp:LinkButton ID="addCart" runat="server" onclick="addCart_Click" CommandName="Add" CommandArgument='<%#Eval("idProduct") %>'
            Text="Add" />

C#
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindDataList();
        }
        MakeTable();
    }
DataTable cart=new DataTable("cart");
    void MakeTable()
    {
        cart.Columns.Add("idProduct");
        Session["cart"] = cart;
    }

C#
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        DataRow row;
        DataTable tb = new DataTable();
        if (e.CommandName == "Add")
        {
            string product = e.CommandArgument.ToString();
            row = cart.NewRow();
            row[0] = product;
            cart.Rows.Add(row);
            Session["cart"] = cart;
        }
    }

Cart.aspx:
C#
if(Session["cart"]!=null)
       {
           DataTable tb = (DataTable)Session["cart"];
           GridView1.DataSource = tb;
           GridView1.DataBind();
       }
Posted
Comments
Ravi Sant 4-Jun-12 5:20am    
Are you using full path url for Response.Redirect? That is common cause. Using relative url solves problem in such case.
vivek.bagdai 4-Jun-12 6:14am    
You Add only one column in table and in grid view there are two bounded fields
1. ("NameProduct")
2. ("idProduct")

So you need to add column or make "NameProduct" to ("idProduct").

1 solution

Try this one.....First Create Table like this

C#
DataTable dt_Exclusion = new DataTable();
DataColumn ExcCode = new DataColumn("fExcCode", typeof(string));
dt_Exclusion.Columns.Add(ExcCode);
DataColumn ExcDesc = new DataColumn("fExcDesc", typeof(string));
dt_Exclusion.Columns.Add(ExcDesc);
dt_Exclusion.AcceptChanges();
Session["ExclusionTable"] = dt_Exclusion;



Then Add a new row in that table
C#
dt_Exclusion = (DataTable)Session["ExclusionTable"];
                     int Count = dt_Exclusion.Rows.Count;
                     DataRow dr = dt_Exclusion.NewRow();
                     dr["fExcCode"] = lnkbtnExcCode.Text;
                     dr["fExcDesc"] = lnkbtnExcDesc.Text;
                     dt_Exclusion.Rows.InsertAt(dr, Count);
                     dt_Exclusion.AcceptChanges();
                     Session["ExclusionTable"] = dt_Exclusion;


Then Bind Gridview
C#
dt_Exclusion = (DataTable)Session["ExclusionTable"];
gvresultexclusion.DataSource = dt_Exclusion;
gvresultexclusion.DataBind();
 
Share this answer
 
v2
Comments
giatuan2011 4-Jun-12 5:55am    
I tried:
void MakeTable()
{
cart.Columns.Add("idProduct",typeof(string));
cart.AcceptChanges();
Session["cart"] = cart;
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Add")
{
string product = e.CommandArgument.ToString();
cart = (DataTable)Session["cart"];
int count = cart.Rows.Count;
DataRow row = cart.NewRow();
row[0] = product;
cart.Rows.InsertAt(row, count);
cart.AcceptChanges();
Session["cart"] = cart;
}
}
And Bind as you.But GridView is empty

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900