0

Hi everyone, I've got a DropDownList in Product.aspx when the add to cart button is pressed the value selected is passed onto a stored procedure. What I need help with is in ShoppingCart.aspx I want the selected value on the previous page to be the index on this pages DropDownList. But the DropDownList is in a GridView and therefore I do not know how to do this.

Any help will be appreciated.

ShoppingCart.aspx

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
  
  <asp:Label ID="titleLabel" runat="server" Text="Your Shopping Cart" CssClass="ShoppingCartTitle" />
  <br />
  <asp:Label ID="statusLabel" CssClass="AdminPageText" ForeColor="Red" runat="server" /><br />
  <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID" Width="100%" BorderWidth="0px" OnRowDeleting="grid_RowDeleting">
    <Columns>
      <asp:BoundField DataField="Name" HeaderText="Product Name" ReadOnly="True" SortExpression="Name" >
        <ControlStyle Width="100%" />
      </asp:BoundField>
      <asp:BoundField DataField="Price" DataFormatString="{0:c}" HeaderText="Price" ReadOnly="True"
        SortExpression="Price" />
        
    <asp:TemplateField HeaderText="Color">
        <ItemTemplate>
            <asp:DropDownList ID="editColor" runat="server" DataSourceID="SqlDataSource1" DataTextField="Value" DataValueField="Value" /><asp:SqlDataSource
                ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BalloonShopConnectionString %>" 
                SelectCommand="SELECT [Value] FROM [AttributeValue]"></asp:SqlDataSource>
        </ItemTemplate>
    </asp:TemplateField>
        
      <asp:TemplateField HeaderText="Quantity">
        <ItemTemplate>
          <asp:TextBox ID="editQuantity" runat="server" CssClass="GridEditingRow" Width="24px" MaxLength="2" Text='<%#Eval("Quantity")%>' />
        </ItemTemplate> 
      </asp:TemplateField>
      
      <asp:BoundField DataField="Subtotal" DataFormatString="{0:c}" HeaderText="Subtotal"
        ReadOnly="True" SortExpression="Subtotal" />
      <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Delete" >
        <ControlStyle CssClass="SmallButtonText " />
      </asp:ButtonField>
      
    </Columns>
  </asp:GridView>
  <table width="100%">
    <tr>
      <td>
        <span class="ProductDescription">
          Total amount:
        </span>
        <asp:Label ID="totalAmountLabel" runat="server" Text="Label" CssClass="ProductPrice" />
      </td>
      <td align="right">
        <asp:Button ID="updateButton" runat="server" Text="Update" CssClass="SmallButtonText" OnClick="updateButton_Click" />
        <asp:Button ID="loginButton" runat="server" CssClass="SmallButtonText" Text="Login" Width="80px" OnClick="loginButton_Click" />
        <asp:Button ID="registerButton" runat="server" CssClass="SmallButtonText" Text="Register" Width="80px" OnClick="registerButton_Click" />
      </td>
    </tr>
  </table>
    <br />
  <uc1:ProductRecommendations ID="recommendations" runat="server" />
</asp:Content>

ShoppingCart.aspx.cs

public partial class ShoppingCart : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
            // popluate the control only in the initial page load
        if (!IsPostBack)
            PopulateControls();
    }

        // fill the shopping cart controls with data
    private void PopulateControls()
    {
            // display product recommendations
        recommendations.LoadCartRecommendations();

            // get the items in the shopping cart
        DataTable dt = ShoppingCartAccess.GetItems();
            // if the shopping cart is empty...
        if (dt.Rows.Count == 0)
        {
            titleLabel.Text = "Your Shopping Cart is empty!";
            grid.Visible = false;
            updateButton.Enabled = false;
                //checkoutButton.Enabled = false;
            totalAmountLabel.Text = String.Format("{0:c}", 0);
        }
        else
            // if the shopping cart is not empty...
        {
                // populate the list with the shopping cart content
            grid.DataSource = dt;
            grid.DataBind();
                // set up controls
            titleLabel.Text = "These are the products in your Shopping Cart:";
            grid.Visible = true;
            updateButton.Enabled = true;
            //checkoutButton.Enabled = true;
                // display the total amount
            decimal amount = ShoppingCartAccess.GetTotalAmount();
            totalAmountLabel.Text = String.Format("{0:c}", amount);
        }
    }

        // remove a product from the cart
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
            // index of the row beeing deleted
        int rowIndex = e.RowIndex;
            // the ID of the product being deleted
        string productId = grid.DataKeys[rowIndex].Value.ToString();
            // remove the product from the shopping cart
        bool success = ShoppingCartAccess.RemoveItem(productId);
            // display the status
        statusLabel.Text = success ? "Product successfuly removed! " :
                                     "There was an error removing the product! ";
            // repopulate the control
        PopulateControls();
    }

        // updat shopping cart product quantities
    protected void updateButton_Click(object sender, EventArgs e)
    {
            // number of rows in the grid view
        int rowsCount = grid.Rows.Count;    
            // will store a row of the gridview
        GridViewRow gridRow;
            // will reference a quantity textBox in the GridView
        TextBox quantityTextBox;
        DropDownList editColor;
            // variable to store productId and quantity
        string productId;
        int quantity;   
            // was the update successful?
        bool success = true;
            
            // go through the rows of the gridview
        for (int i = 0; i < rowsCount; i++)
        {
                // get a row
            gridRow = grid.Rows[i];
                // the Id of the product being updated
            productId = grid.DataKeys[i].Value.ToString();
                // get the quantity textbox in the row
            quantityTextBox = (TextBox)gridRow.FindControl("editQuantity");
            editColor = (DropDownList)gridRow.FindControl("editColor");
            string attributes = editColor.SelectedValue;
                // get the quantity, gaurding against bogus values
            if (Int32.TryParse(quantityTextBox.Text, out quantity))
            {
                    // update the product quantity
                success = success && ShoppingCartAccess.UpdateItem(productId, quantity, attributes);
            }
            else
            {
                    // if TryParse did not succeed
                success = false;
            }

                // display the status message
            statusLabel.Text = success ?
                "Your Shopping Cart was successfuly updated!" :
                "Some quantity updates failed! Please verify your cart!";
        }
            // repopulate the control
        PopulateControls();
    }

        // redirect to login page
    protected void loginButton_Click(object sender, EventArgs e)
    {
        Response.Redirect("Checkout.aspx");
    }

        // redirect to register page
    protected void registerButton_Click(object sender, EventArgs e)
    { 
        Response.Redirect("Register.aspx");
    }
}
2
Contributors
1
Reply
2
Views
7 Years
Discussion Span
Last Post by Ramesh S
0

1. From product page, you can pass the selected value of the dropdown list through session or query string.
2. In shopping cart page, in the RowDataBound event of GridView, find the dropdownlist control from the GridView row and set selected value to the value received from session or query string.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.