Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

how to display a Drop Down List in a GridView

Posted on 2008-10-01
5
Medium Priority
?
803 Views
Last Modified: 2013-11-07
Hello All,

i have a gridview with columns like ItemNo, Title, Price, Size. everything is coming from SQL DB. what i am trying to do is to display a DDL in the gridview so that both the price and Size are diplayed in a DDL format. to explain clearly right now for every itemno, i have different sizes namely 1,2,3,4,5 etc and a different price according to the sizes. for example

itemno     title                  price        size

A1001   Red Shoes         $15           2
A1001  Red Shoes          $20           4

A1002 Black Shoes          $25           7    
A1002  Black Shoes          $35        10  and so on.

as you can see its displaying the title and itemno so many items. i was wondering if there's way to just display itemno and title ( just once ) and their respective prices and sizes in a DDL's. something

like below.

itemNo          title              price     size

A1001           Red Shoes     $15      2
                                         $20       4

A1002     Black Shoes    $25       7
                                         $35     10
so basically i want to display the sizes and prices like above. i am not sure if how to do this and
doesnt know if DDL is the correct option to achieve this.
PLEASE Kindly advice me.
i am attaching my full code.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GVsearch.aspx.cs" Inherits="GVsearch" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>   </title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox id="txtSearch" runat="server" />
 
<asp:Button id="btnSearch" runat="server"
    Text    = "Search"
    OnClick = "btnSearch_OnClick" />
    <br />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:LocalDBConnectionString %>"
            SelectCommand="SELECT [ItemNumber], [Title], [Price], [SizeName],[Description],[ShortTitle],[ShortDescription] FROM [SearchTable] WHERE (([Title] LIKE '%' + replace(@Title, ' ', '%') + '%') OR ([ShortDescription] LIKE '%' + replace(@ShortDescription, ' ', '%') + '%') OR ([ShortTitle] LIKE '%' + replace(@ShortTitle, ' ', '%') + '%') OR ([Description] LIKE '%' + replace(@Description, ' ', '%') + '%') OR ([ItemNumber] LIKE '%' + replace(@ItemNumber, ' ', '%') + '%') OR ([SizeName] LIKE '%' + replace(@SizeName, ' ', '%') + '%'))" OnSelecting="SqlDataSource1_Selecting" >
            <SelectParameters>
                <asp:Parameter  Name="Title"  Type="String" />
                <asp:Parameter  Name="ShortDescription" Type="String" />
                <asp:Parameter  Name="ShortTitle" Type="String" />
                <asp:Parameter  Name="Description" Type="String" />
                <asp:Parameter  Name="ItemNumber"  Type="String" />
                <asp:Parameter  Name="SizeName" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>
    <br />
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            CellPadding="4" DataKeyNames="ItemNumber" DataSourceID="SqlDataSource1" ForeColor="#333333"
            GridLines="None" AllowSorting="True">
            <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
            <Columns>
                <asp:BoundField DataField="ItemNumber" HeaderText="Item" InsertVisible="False"
                    SortExpression="ItemNumber" HtmlEncode="False" />
                <asp:BoundField DataField="Title" HeaderText="Product Name" SortExpression="Title" HtmlEncode="False" />
                <asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price"  DataFormatString="{0:c}" HtmlEncode="False" />
                <asp:BoundField DataField="SizeName" HeaderText="Size" SortExpression="SizeName"  HtmlEncode="False" />
                <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" HtmlEncode="False" />
                            </Columns>
            <RowStyle BackColor="#E3EAEB" />
            <EditRowStyle BackColor="#7C6F57" />
            <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
            <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
            <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
  </div>
    
    </form>
</body>
</html>
 
------------------CODE BEHIND---------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
 
public partial class GVsearch : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
 
    protected void btnSearch_OnClick(object sender, EventArgs e)
    {
        GridView1.DataBind();
    }
 
 
 
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        e.Command.Parameters["@Title"].Value = txtSearch.Text;
        e.Command.Parameters["@ShortDescription"].Value = txtSearch.Text;
        e.Command.Parameters["@ShortTitle"].Value = txtSearch.Text;
        e.Command.Parameters["@Description"].Value = txtSearch.Text;
        e.Command.Parameters["@ItemNumber"].Value = txtSearch.Text;
        e.Command.Parameters["@SizeName"].Value = txtSearch.Text;
           }
 
}

Open in new window

0
Comment
Question by:niceoneishere
  • 2
5 Comments
 
LVL 4

Expert Comment

by:Joni Kettunen
ID: 22621811
0
 
LVL 2

Author Comment

by:niceoneishere
ID: 22627066
Hello Sir,
all i am trying to do is for every ItemNo in the gridview i want to display that itemno's sizes in a DropDownList.

i have modified my code according to link 1 you have posted and here is my new code. it still doesnt work.
can you please help me out sir, i appreciate it.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Dgsearch.aspx.cs" Inherits="Dgsearch" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>My SQL Search Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox id="txtSearch" runat="server" />
 
<asp:Button id="btnSearch" runat="server"
    Text    = "Search"
    OnClick = "btnSearch_OnClick" />
<br />
<asp:GridView ID="GridView1" runat="server" 
        AutoGenerateColumns="false" DataKeyNames="ItemNumber">
        <Columns>
        <asp:TemplateField HeaderText="Item Number">
        <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "ItemNumber") %>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Product Name">
        <ItemTemplate>
        <!--<asp:Label ID="lbgvtitle" runat="server" Text='<%# Eval("Title") %>' />-->
        <%# DataBinder.Eval(Container.DataItem, "Title") %>
         </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Available Sizes">
            <ItemTemplate>
            <asp:DropDownList ID="ddlSizes" runat="server">
            </asp:DropDownList>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Price">
        <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "Price") %>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText=" Description">
        <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "Description") %>
        </ItemTemplate>
        </asp:TemplateField>       
        </Columns>
        </asp:GridView>
 
 
    </div>
    </form>
</body>
</html>
-------------------CODE BEHIND--------------------------------
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
 
 
public partial class Dgsearch : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
 
    public void btnSearch_OnClick(object sender, EventArgs e)
    {
        SqlConnection objConnection = null;
        SqlCommand objCommand = null;
        SqlDataAdapter objAdapter = null;
        DataSet objDataSet = null;
        string strSearch = null;
        string strSQLQuery = null;
 
        // Get Search 
        strSearch = txtSearch.Text;
 
        // If there's nothing to search for then don't search
        // o/w build our SQL Query and execute it.
        if (strSearch.Trim(' ').Length > 0)
        {
            // Set up our connection.
            objConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["WSLocalDBConnectionString"].ConnectionString);
 
            // Set up our SQL query text.
 
            strSQLQuery = "SELECT ItemNumber, Title, SizeName, Price, Description " + "FROM SearchTable " + "WHERE Title LIKE '%" + strSearch.Replace("'", "''") + "%' " + "ORDER BY ItemNumber;";
            // Create new command object passing it our SQL query
            // and telling it which connection to use.
            objCommand = new SqlCommand(strSQLQuery, objConnection);
 
            // Get a DataSet to bind the DataGrid to
            objAdapter = new SqlDataAdapter(objCommand);
            objDataSet = new DataSet();
            objAdapter.Fill(objDataSet);
 
            GridView1.DataSource = objDataSet;
            GridView1.DataBind();
 
            DropDownList drdSizes;
 
           foreach (GridViewRow gvrows in GridView1.Rows)
            {
                // Nested DropDownList Control reference is passed to the DrdSizes object. This will allow you access the properties of dropdownlist placed inside the GridView Template column.
 
               drdSizes = (DropDownList)(GridView1.Rows[gvrows.RowIndex].Cells[1].FindControl("ddlSizes"));
 
                // DataBinding of nested DropDownList Control for each row of GridView Control.  
 
               drdSizes.DataSource = objDataSet;
                drdSizes.DataValueField = "ItemNumber";
                drdSizes.DataTextField = "SizeName";
                drdSizes.DataBind();
 
                // GridView DataKeys Collection object is used here to set the SelectedValue property of nested DropDownList in each row.
 
                drdSizes.SelectedValue = GridView1.DataKeys[gvrows.RowIndex]["ItemNumber"].ToString();
 
 
            }
 
            objConnection.Close();
        }
        else
        {
            txtSearch.Text = "Enter Search Here";
        }
    }
 
 
}

Open in new window

0
 
LVL 26

Accepted Solution

by:
Anurag Thakur earned 1500 total points
ID: 22628584
even in your modified code i cannot see a dropdownlist in the item template for item number
please go through this link and try again. for for giving a link again but these samples are already available on the net so no need to reinvent the wheel
http://www.codeproject.com/KB/dotnet/AccessingControlsInsideGr.aspx
0
 
LVL 4

Expert Comment

by:Joni Kettunen
ID: 22631173
I have to agree with ragi0017. His code sample is better.
0

Featured Post

Free Backup Tool for VMware and Hyper-V

Restore full virtual machine or individual guest files from 19 common file systems directly from the backup file. Schedule VM backups with PowerShell scripts. Set desired time, lean back and let the script to notify you via email upon completion.  

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
High user turnover can cause old/redundant user data to consume valuable space. UserResourceCleanup was developed to address this by automatically deleting user folders when the user account is deleted.
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
Are you ready to place your question in front of subject-matter experts for more timely responses? With the release of Priority Question, Premium Members, Team Accounts and Qualified Experts can now identify the emergent level of their issue, signal…
Suggested Courses

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question