zoukankan      html  css  js  c++  java
  • Atlas学习手记(12):使用CascadingDropDown控件

    CascadingDropDown通常叫作级联下拉菜单,本文将通过读取Northwind数据库中的Emplyee、Order、OrderDatail信息作为示例,来展示一下它的使用。

    主要内容

    1.CascadingDropDown控件介绍

    2.从数据库读取数据并填充CascadingDropDown

    一.CascadingDropDown控件介绍

    CascadingDropDown通常叫作级联下拉菜单,本文将通过读取Northwind数据库中的Emplyee、Order、OrderDatail信息作为示例,来展示一下它的使用。示例代码如下:

    <atlasToolkit:CascadingDropDown ID="CDD1" runat="server">

        

        
    <atlasToolkit:CascadingDropDownProperties

            
    TargetControlID="DropDownList2"

            Category
    ="Model"

            PromptText
    ="Please select a model"

            LoadingText
    ="[Loading models]"

            ServicePath
    ="CarsService.asmx"

            ServiceMethod
    ="GetDropDownContents"

            ParentControlID
    ="DropDownList1"

            SelectedValue
    ="SomeValue">

        
    </atlasToolkit:CascadingDropDownProperties>

        

    </atlasToolkit:CascadingDropDown>

    对于CascadingDropDown需要为它添加CascadingDropDownProperties,有多少个下拉列表,就添加几个CascadingDropDownProperties,主要属性如下:

    属性

    说明

    TargetControlID

    指定要扩展的DropDownList的ID

    Category

    DropDownList表示的类别名称,在WebMethod中会用到

    PromptText

    没有选择时显示的文字

    LoadingText

    加载数据时显示的文字

    ServicePath

    获取数据的Web Service,为每个DropDownList都要指定

    ServiceMethod

    获取数据的Web Method

    ParentControlID

    要扩展的DropDownList的父控件ID

    SelectedValue

    默认的选择项的值

    二.从数据库读取数据并填充CascadingDropDown

    下面用读取Northwind数据库中的Emplyee、Order、OrderDatail信息,看一个完整的示例。在新建一个Web Site后,先在页面的头部加上:

    <%@ Register Assembly="AtlasControlToolkit" 

                Namespace
    ="AtlasControlToolkit" 

                TagPrefix
    ="atlasToolkit" 
    %>

    加入三个DropDownList,分别用来显示Emplyee,Order,OrderDatail:

    <div>

        
    <h3>

            Employee:

            
    <asp:DropDownList ID="ddlEmployees" runat="server" /><br /><br />

             
    &nbsp;&nbsp;Order:

            
    <asp:DropDownList ID="ddlOrders" runat="server" /><br /><br />

             
    &nbsp;&nbsp;Detail:

            
    <asp:DropDownList ID="ddlOrderDetails" runat="server" />

        
    </h3>

    </div>

    下面我们添加一个Northwind.asmx的Web Service,编写相关的Web Method:

    [WebMethod]

    public CascadingDropDownNameValue[] GetEmployees(

        
    string knownCategoryValues, string category)

    {

        
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        SqlConnection connection 
    = new

            SqlConnection(connectionString);

        SqlCommand command 
    = new SqlCommand("SELECT * FROM Employees");

        command.Connection 
    = connection;

        connection.Open();

        SqlDataAdapter adapter 
    = new SqlDataAdapter(command);

        DataSet dataSet 
    = new DataSet();

        adapter.Fill(dataSet);

        command.Connection.Close();

        DataTable tbl 
    = dataSet.Tables[0];

        List
    <CascadingDropDownNameValue> values =

            
    new List<CascadingDropDownNameValue>();

        
    foreach (DataRow dr in tbl.Rows)

        
    {

            
    string sEmployee = (string)dr["FirstName"+ " " +

                dr[
    "LastName"];

            
    int iEmployee = (int)dr["EmployeeID"];

            values.Add(
    new CascadingDropDownNameValue(

              sEmployee, iEmployee.ToString()));

        }


        
    return values.ToArray();

    }

    注意Web Method的参数签名是不可以改变的,并且它最后返回的是名-值对这种形式的数组。

    整个完整后的Web Service如下:

    完整代码 System;

    using System.Web;

    using System.Collections;

    using System.Configuration;

    using System.Collections.Generic;

    using System.Collections.Specialized;

    using System.Web.Services;

    using System.Web.Services.Protocols;

    using AtlasControlToolkit;

    using System.Data;

    using System.Data.SqlClient;

     

    /// <summary>

    /// Summary description for Northwind

    /// </summary>


    [WebService(Namespace 
    = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo 
    = WsiProfiles.BasicProfile1_1)]

    public class Northwind : System.Web.Services.WebService {

     

        
    public Northwind () {

     

            
    //Uncomment the following line if using designed components 

            
    //InitializeComponent(); 

        }


     

        [WebMethod]

        
    public CascadingDropDownNameValue[] GetEmployees(

            
    string knownCategoryValues, string category)

        
    {

            
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

            SqlConnection connection 
    = new

                SqlConnection(connectionString);

     

            SqlCommand command 
    = new SqlCommand("SELECT * FROM Employees");

     

            command.Connection 
    = connection;

            connection.Open();

     

            SqlDataAdapter adapter 
    = new SqlDataAdapter(command);

            DataSet dataSet 
    = new DataSet();

     

            adapter.Fill(dataSet);

            command.Connection.Close();

     

            DataTable tbl 
    = dataSet.Tables[0];

     

            List
    <CascadingDropDownNameValue> values =

                
    new List<CascadingDropDownNameValue>();

            
    foreach (DataRow dr in tbl.Rows)

            
    {

                
    string sEmployee = (string)dr["FirstName"+ " " +

                    dr[
    "LastName"];

                
    int iEmployee = (int)dr["EmployeeID"];

                values.Add(
    new CascadingDropDownNameValue(

                  sEmployee, iEmployee.ToString()));

            }


            
    return values.ToArray();

        }


     

        [WebMethod]

        
    public CascadingDropDownNameValue[] GetOrdersByEmployee(

          
    string knownCategoryValues,

          
    string category)

        
    {

            StringDictionary kv 
    = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);

            
    int iEmployee;

            
    if (!kv.ContainsKey("Employee"|| !Int32.TryParse(kv["Employee"], out iEmployee))

            
    {

                
    return null;

            }


     

            
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

            SqlConnection connection 
    = new

                SqlConnection(connectionString);

     

            SqlCommand command 
    =

            
    new SqlCommand("SELECT OrderID FROM Orders WHERE EmployeeID = " + iEmployee);

     

            command.Connection 
    = connection;

            connection.Open();

     

            SqlDataAdapter adapter 
    = new SqlDataAdapter(command);

            DataSet dataSet 
    = new DataSet();

     

            adapter.Fill(dataSet);

            command.Connection.Close();

     

            DataTable tbl 
    = dataSet.Tables[0];

     

            List
    <CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();

            
    foreach (DataRow dr in tbl.Rows)

            
    {

                
    string sOrder = dr["OrderID"].ToString();

                
    int iOrder = (int)dr["OrderID"];

                values.Add(
    new CascadingDropDownNameValue(

                  sOrder, iOrder.ToString()));

            }


            
    return values.ToArray();

        }


     

        [WebMethod]

        
    public CascadingDropDownNameValue[] GetDetailsByOrder(

          
    string knownCategoryValues,

          
    string category)

        
    {

            StringDictionary kv 
    = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);

            
    int iOrder;

            
    if (!kv.ContainsKey("Order"|| !Int32.TryParse(kv["Order"], out iOrder))

            
    {

                
    return null;

            }


     

            
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

            SqlConnection connection 
    = new

                SqlConnection(connectionString);

     

            SqlCommand command 
    =

            
    new SqlCommand("SELECT UnitPrice,OrderID FROM [Order Details] WHERE OrderID = " + iOrder);

     

            command.Connection 
    = connection;

            connection.Open();

     

            SqlDataAdapter adapter 
    = new SqlDataAdapter(command);

            DataSet dataSet 
    = new DataSet();

     

            adapter.Fill(dataSet);

            command.Connection.Close();

     

            DataTable tbl 
    = dataSet.Tables[0];

     

            List
    <CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();

            
    foreach (DataRow dr in tbl.Rows)

            
    {

                
    string UnitPrice = dr["UnitPrice"].ToString();

                
    int intOrder = (int)dr["OrderID"];

                values.Add(
    new CascadingDropDownNameValue(

                  UnitPrice, intOrder.ToString()));

            }


            
    return values.ToArray();

        }
       

    }

    在Web.config中设置连接信息:

    <connectionStrings>

        
    <add name="ConnectionString" connectionString="Data Source=RJ-097;User ID=sa;Password=sa;Initial Catalog=Northwind" providerName="System.Data.SqlClient"/>

    </connectionStrings>

    这时我们再添加CascadingDropDown控件,设置它的属性如下:

    <atlasToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server">

        
    <atlasToolkit:CascadingDropDownProperties Category="Employee" ParentControlID=""

            PromptText
    ="Select Employee" SelectedValue="" ServiceMethod="GetEmployees" ServicePath="Northwind.asmx"

            TargetControlID
    ="ddlEmployees" />

        
    <atlasToolkit:CascadingDropDownProperties Category="Order" ParentControlID="ddlEmployees"

            PromptText
    ="Select Order" SelectedValue="" ServiceMethod="GetOrdersByEmployee"

            ServicePath
    ="Northwind.asmx" TargetControlID="ddlOrders" />

        
    <atlasToolkit:CascadingDropDownProperties Category="OrderDetail" ParentControlID="ddlOrders"

            PromptText
    ="Select OrderDetail" SelectedValue="" ServiceMethod="GetDetailsByOrder"

            ServicePath
    ="Northwind.asmx" TargetControlID="ddlOrderDetails" />

    </atlasToolkit:CascadingDropDown>

    至此,大功告成。运行后效果如下:

    选择:

    完整示例下载

  • 相关阅读:
    Mac上的抓包工具Charles[转载]
    js 实现自动调出键盘
    Mac下git安装(使用Xcode)
    weinre远程调试
    Css Sprite Demo
    sublime 常用快捷键
    css 盒子模型 以及 box-sizing属性
    jquery中bind,live,delegate,on的区别
    模拟实现库函数的atoi、atof和itoa
    常见排序算法
  • 原文地址:https://www.cnblogs.com/qfb620/p/1121037.html
Copyright © 2011-2022 走看看