توضیحات و دانلود

ایجاد Cascading DropDownLists در ASP.Net
0 0
ایجاد Cascading DropDownLists در ASP.Net

Cascading DropDownList به معنای مجموعه ای از DropDownLists وابسته است که یکی از DropDownList وابسته به DropDownList یا DropDownList قبلی است و بر اساس آیتم انتخاب شده توسط کاربر ذخیره می شود. در بسیاری از موارد ما باید از Cascading DropDownLists استفاده کنیم

قاره - کشور - شهر

شهر به کشور وابسته است و به نوبه خود کشور به قاره وابسته است بنابراین ما به یک سری از Cascading DropDownList نیاز داریم.

 

طراحی پایگاه داده

برای این آموزش،  سه جدول ایجاد کرده ایم که طرح های آنها در زیر آمده است

جدول قاره ها


جدول کشورها

جدول شهرها

رشته اتصال

<connectionStrings>

  <add name="conString" connectionString="Data Source=.\SQLEXPRESS;

    database=CascadingDDL;Integrated Security=true"/>

</connectionStrings>

طرح Front End

از 3 DropDownLists برای هر نهاد استفاده کرده ایم که به روش زیر است :

1. ddlContinents - فهرست قاره ها

2. ddlCountry - لیست کشورها

3. ddlCity - فهرست شهرهای

<span style ="font-family:Arial">Select Continent : </span>

<asp:DropDownList ID="ddlContinents" runat="server" AutoPostBack = "true"

             OnSelectedIndexChanged="ddlContinents_SelectedIndexChanged">

<asp:ListItem Text = "--Select Continent--" Value = ""></asp:ListItem>

</asp:DropDownList>

 

<br /><br />

<span style ="font-family:Arial">Select Country : </span>

<asp:DropDownList ID="ddlCountry" runat="server" AutoPostBack = "true"

Enabled = "false"  OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged">

<asp:ListItem Text = "--Select Country--" Value = ""></asp:ListItem>

</asp:DropDownList>

 

<br /><br />

<span style ="font-family:Arial">Select City : </span>

<asp:DropDownList ID="ddlCity" runat="server" AutoPostBack = "true"

 Enabled = "false" OnSelectedIndexChanged="ddlCity_SelectedIndexChanged">

<asp:ListItem Text = "--Select City--" Value = ""></asp:ListItem>

</asp:DropDownList>

 

<br /><br />

<asp:Label ID="lblResults" runat="server" Text="" Font-Names = "Arial" />

 رویداد OnSelectedIndexChanged را به تمام DropDownLists اضافه کردیم و همچنین AutoPostBack را set property به true قرار دادیم .

رابط کاربری  به شرح زیر است :

نمایش قاره ها در DropDownList

در رویداد Page_Load صفحه  DropDownList قاره ها را پر می کنیم

C #

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

        ddlContinents.AppendDataBoundItems = true;

        String strConnString = ConfigurationManager

            .ConnectionStrings["conString"].ConnectionString;

        String strQuery = "select ID, ContinentName from Continents";

        SqlConnection con = new SqlConnection(strConnString);

        SqlCommand cmd = new SqlCommand();

        cmd.CommandType = CommandType.Text;

        cmd.CommandText = strQuery;

        cmd.Connection = con;

        try

        {

            con.Open();

            ddlContinents.DataSource = cmd.ExecuteReader();

            ddlContinents.DataTextField = "ContinentName";

            ddlContinents.DataValueField = "ID";

            ddlContinents.DataBind();

        }

        catch (Exception ex)

        {

            throw ex;

        }

        finally

        {

            con.Close();

            con.Dispose();

        }

    }

}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

  If Not IsPostBack Then

    ddlContinents.AppendDataBoundItems = True

    Dim strConnString As [String] = ConfigurationManager _

             .ConnectionStrings("conString").ConnectionString

    Dim strQuery As [String] = "select ID, ContinentName from Continents"

    Dim con As New SqlConnection(strConnString)

    Dim cmd As New SqlCommand()

    cmd.CommandType = CommandType.Text

    cmd.CommandText = strQuery

    cmd.Connection = con

    Try

       con.Open()

       ddlContinents.DataSource = cmd.ExecuteReader()

       ddlContinents.DataTextField = "ContinentName"

       ddlContinents.DataValueField = "ID"

       ddlContinents.DataBind()

    Catch ex As Exception

       Throw ex

    Finally

       con.Close()

       con.Dispose()

    End Try

  End If

End Sub

نمایش کشورها در DropDownList

 در رویداد SelectedIndexChanged از  Continent DropDownList  جمعیت کشورهای DropDownList را براساس شناسه قاره توسط کاربرانتخاب می شود

C #

protected void ddlContinents_SelectedIndexChanged(object sender, EventArgs e)

{

    ddlCountry.Items.Clear();

    ddlCountry.Items.Add(new ListItem("--Select Country--", ""));

    ddlCity.Items.Clear();

    ddlCity.Items.Add(new ListItem("--Select City--", ""));   

 

    ddlCountry.AppendDataBoundItems = true;

    String strConnString = ConfigurationManager

        .ConnectionStrings["conString"].ConnectionString;

    String strQuery = "select ID, CountryName from Countries " +

                       "where ContinentID=@ContinentID";

    SqlConnection con = new SqlConnection(strConnString);

    SqlCommand cmd = new SqlCommand();

    cmd.Parameters.AddWithValue("@ContinentID",

        ddlContinents.SelectedItem.Value); 

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = strQuery;

    cmd.Connection = con;

    try

    {

        con.Open();

        ddlCountry.DataSource = cmd.ExecuteReader();

        ddlCountry.DataTextField = "CountryName";

        ddlCountry.DataValueField = "ID";

        ddlCountry.DataBind();

        if (ddlCountry.Items.Count > 1)

        {

            ddlCountry.Enabled = true;

        }

        else

        {

            ddlCountry.Enabled = false;

            ddlCity.Enabled = false;

        }

    }

    catch (Exception ex)

    {

        throw ex;

    }

    finally

    {

        con.Close();

        con.Dispose();

    }

}

VB.Net

Protected Sub ddlContinents_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

   ddlCountry.Items.Clear()

   ddlCountry.Items.Add(New ListItem("--Select Country--", ""))

   ddlCity.Items.Clear()

   ddlCity.Items.Add(New ListItem("--Select City--", ""))

 

   ddlCountry.AppendDataBoundItems = True

   Dim strConnString As [String] = ConfigurationManager _

                   .ConnectionStrings("conString").ConnectionString

   Dim strQuery As [String] = "select ID, CountryName from Countries " _

                                    & "where ContinentID=@ContinentID"

   Dim con As New SqlConnection(strConnString)

   Dim cmd As New SqlCommand()

   cmd.Parameters.AddWithValue("@ContinentID", _

                             ddlContinents.SelectedItem.Value)

   cmd.CommandType = CommandType.Text

   cmd.CommandText = strQuery

   cmd.Connection = con

   Try

      con.Open()

      ddlCountry.DataSource = cmd.ExecuteReader()

      ddlCountry.DataTextField = "CountryName"

      ddlCountry.DataValueField = "ID"

      ddlCountry.DataBind()

      If ddlCountry.Items.Count > 1 Then

             ddlCountry.Enabled = True

      Else

             ddlCountry.Enabled = False

             ddlCity.Enabled = False

      End If

   Catch ex As Exception

      Throw ex

   Finally

       con.Close()

       con.Dispose()

   End Try

End Sub

شما متوجه خواهید شد که ID قاره را به عنوان پارامتر به Query با استفاده از Property of SelectedItemValue به DropDownList می گذاریم در نتیجه پرس و جو پرونده ها (Countries) را برای این Continental ID و سپس به  Country DropDownList باز می گردانیم 

جمعیت شهر DropDownList

در حال حاضر در انتخاب کشور  پرچم شهرهای آن کشور را به DropDownList میریزیم.

C #

protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)

{

    ddlCity.Items.Clear();

    ddlCity.Items.Add(new ListItem("--Select City--", ""));

    ddlCity.AppendDataBoundItems = true;

    String strConnString = ConfigurationManager

               .ConnectionStrings["conString"].ConnectionString;

    String strQuery = "select ID, CityName from Cities " +

                                "where CountryID=@CountryID";

    SqlConnection con = new SqlConnection(strConnString);

    SqlCommand cmd = new SqlCommand();

    cmd.Parameters.AddWithValue("@CountryID",

                          ddlCountry.SelectedItem.Value);

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = strQuery;

    cmd.Connection = con;

    try

    {

        con.Open();

        ddlCity.DataSource = cmd.ExecuteReader();

        ddlCity.DataTextField = "CityName";

        ddlCity.DataValueField = "ID";

        ddlCity.DataBind();

        if (ddlCity.Items.Count > 1)

        {

            ddlCity.Enabled = true;

        }

        else

        {

            ddlCity.Enabled = false;

        }

     

    }

    catch (Exception ex)

    {

        throw ex;

    }

    finally

    {

        con.Close();

        con.Dispose();

    }

}

VB.Net

Protected Sub ddlCountry_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

   ddlCity.Items.Clear()

   ddlCity.Items.Add(New ListItem("--Select City--", ""))

   ddlCity.AppendDataBoundItems = True

   Dim strConnString As [String] = ConfigurationManager _

                      .ConnectionStrings("conString").ConnectionString

   Dim strQuery As [String] = "select ID, CityName from Cities " _

                      & "where CountryID=@CountryID"

   Dim con As New SqlConnection(strConnString)

   Dim cmd As New SqlCommand()

   cmd.Parameters.AddWithValue("@CountryID", _

                               ddlCountry.SelectedItem.Value)

   cmd.CommandType = CommandType.Text

   cmd.CommandText = strQuery

   cmd.Connection = con

   Try

        con.Open()

        ddlCity.DataSource = cmd.ExecuteReader()

        ddlCity.DataTextField = "CityName"

        ddlCity.DataValueField = "ID"

        ddlCity.DataBind()

        If ddlCity.Items.Count > 1 Then

            ddlCity.Enabled = True

        Else

            ddlCity.Enabled = False

        End If

   Catch ex As Exception

        Throw ex

   Finally

         con.Close()

         con.Dispose()

   End Try

End Sub

در جدول شهرها , تمام شهرهایی که متعلق به آن کشور هستند توسط کاربر انتخاب میشود.

 

نمایش نتایج

در نهایت در رویداد SelectedIndexChanged شهر DropDownList  انتخاب و نمایش می دهیم.

 

C #

protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)

{

    lblResults.Text = "You Selected " +

                      ddlContinents.SelectedItem.Text + " -----> " +

                      ddlCountry.SelectedItem.Text + " -----> " +

                      ddlCity.SelectedItem.Text;

}

VB.Net

Protected Sub ddlCity_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

   lblResults.Text = "You Selected " & _

                     ddlContinents.SelectedItem.Text & " -----> " & _

                     ddlCountry.SelectedItem.Text & " -----> " & _

                     ddlCity.SelectedItem.Text

End Sub

خروجی در تصویر زیر نشان داده شده است

بنابراین ما به پایان این مقاله می رسیم 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :