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

DropDownList را از بانک اطلاعات در مثال ASP.Net جمع کنید.
0 0
DropDownList را از بانک اطلاعات در مثال ASP.Net جمع کنید.

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

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

شهر به کشور وابسته است و به نوبه خود کشور وابسته به قاره است بنابراین ما در اینجا به یک سری 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 Event را به همه DropDownLists و همچنین خاصیت AutoPostBack  را به 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 از  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

همانطور که میبینید در حال انتقال شناسه قاره به عنوان پارامتر به Query با استفاده از خاصیت SelectedItemValue از DropDownList هستیم ، بنابراین Query سوابق (کشورها) را برای شناسه آن قاره که به کشور DropDownList وصل می شوند ، بازمی گردانیم .

ایجاد DropDownList شهر

اکنون در مورد انتخاب کشور ،  شهرها را برای آن کشور در City 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

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

نمایش نتایج

سرانجام در رویداد SelectedIndexChanged از City 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 استفاده کنید.

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