加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

CascadingDropDown +Webservice:实现联动下拉框

发布时间:2020-12-17 02:42:48 所属栏目:安全 来源:网络整理
导读:本程序包含Default2.aspx、Default2.aspx.cs、CarsService.asmx、App_Code/CarsService.cs、CountrysService.xml五个文件;标红色的代码表示要注意的: 1、Default2.aspx完整代码: %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.c


本程序包含Default2.aspx、Default2.aspx.cs、CarsService.asmx、App_Code/CarsService.cs、CountrysService.xml五个文件;标红色的代码表示要注意的:
1、Default2.aspx完整代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2"? EnableEventValidation="false" %>

<!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">
??????? <asp:ScriptManager ID="ScriptManager1" runat="server" />

??????? <table>
??????????? <tr>
??????????????? <td>Make</td>
??????????????? <td><asp:DropDownList ID="DropDownList1" runat="server" Width="170" /></td>
??????????? </tr>
??????????? <tr>
??????????????? <td>Model</td>
??????????????? <td><asp:DropDownList ID="DropDownList2" runat="server" Width="170" /></td>
??????????? </tr>
??????????? <tr>
??????????????? <td>Color</td>
??????????????? <td><asp:DropDownList ID="DropDownList3" runat="server" Width="170" AutoPostBack="true"
??????????????????? OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged" /></td>
??????????? </tr>
??????? </table>
??????? <br />
??????? <asp:XmlDataSource
??????????? ID="XmlDataSource1" runat="server" DataFile="~/App_Data/CountrysService.xml"></asp:XmlDataSource>
???????
??????? <ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="DropDownList1"
??????????? Category="country"? PromptText="Please select a make"? LoadingText="[Loading makes...]"
??????????? ServicePath="CarsService.asmx" ServiceMethod="GetDropDownContents" />
???????????
??????? <ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="DropDownList2"
??????????? Category="state" PromptText="Please select a model" LoadingText="[Loading models...]"
??????????? ServiceMethod="GetDropDownContentsPageMethod" ParentControlID="DropDownList1" />
???????????
??????? <ajaxToolkit:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="DropDownList3"
??????????? Category="university" PromptText="Please select a color" LoadingText="[Loading colors...]"
??????????? ServicePath="CarsService.asmx" ServiceMethod="GetDropDownContents"
??????????? ParentControlID="DropDownList2" />
?????
??????????? <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" RenderMode="inline">
??????????? <ContentTemplate>
??????????????? <asp:Label ID="Label1" runat="server" Text="[No response provided yet]" />
??????????? </ContentTemplate>
??????????? <Triggers>
??????????????? <asp:AsyncPostBackTrigger ControlID="DropDownList3" EventName="SelectedIndexChanged" />
??????????? </Triggers>
??????? </asp:UpdatePanel>

??? </form>
</body>

</html>
2、Default2.aspx.cs完整代码:

using System;
using System.Data;
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;

using System.Web.Services;
using System.Collections.Specialized;
using AjaxControlToolkit;
public partial class Default2 : System.Web.UI.Page
{
??? protected void DropDownList3_SelectedIndexChanged(object sender,EventArgs e)
??? {
??????? // Get selected values
??????? string make = DropDownList1.SelectedItem.Text;
??????? string model = DropDownList2.SelectedItem.Text;
??????? string color = DropDownList3.SelectedItem.Text;
??????? // Output result string based on which values are specified
??????? if (string.IsNullOrEmpty(make))
??????? {
??????????? Label1.Text = "Please select a make.";
??????? }
??????? else if (string.IsNullOrEmpty(model))
??????? {
??????????? Label1.Text = "Please select a model.";
??????? }
??????? else if (string.IsNullOrEmpty(color))
??????? {
??????????? Label1.Text = "Please select a color.";
??????? }
??????? else
??????? {
??????????? Label1.Text = string.Format("You have chosen a {0} {1} {2}. Nice University!",color,make,model);
??????? }
??? }


??? [WebMethod]
??? [System.Web.Script.Services.ScriptMethod]
??? public static CascadingDropDownNameValue[] GetDropDownContentsPageMethod(string knownCategoryValues,string category)
??? {
??????? return new CarsService().GetDropDownContents(knownCategoryValues,category);
??? }

}

3、添加CarsService.asmx不用改CarsService.asmx,App_Code/CarsService.cs完整代码:

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;

using System.Xml;
using System.Collections.Specialized;
/// <summary>
/// CarsService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService()]
public class CarsService : System.Web.Services.WebService {

??? private static XmlDocument _document;
??? private static object _lock = new object();

??? // we make these public statics just so we can call them from externally for the
??? // page method call
??? //
??? public static XmlDocument Document
??? {
??????? get
??????? {
??????????? lock (_lock)
??????????? {
??????????????? if (_document == null)
??????????????? {
??????????????????? // Read XML data from disk
??????????????????? _document = new XmlDocument();
??????????????????? //_document.Load(HttpContext.Current.Server.MapPath("~/App_Data/CarsService.xml"));
??????????????????? _document.Load(HttpContext.Current.Server.MapPath("~/App_Data/CountrysService.xml"));
??????????????? }
??????????? }
??????????? return _document;
??????? }
??? }
??? //Hierarchy层级的意思
??? public static string[] Hierarchy
??? {
??????? get
??????? {

??????????? //return new string[] { "make","model" };
??????????? return new string[] { "country","state" };
??????? }
??? }


??? public CarsService () {

??????? //如果使用设计的组件,请取消注释以下行
??????? //InitializeComponent();
??? }

??? [WebMethod]
??? public AjaxControlToolkit.CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues,string category)
??? {
??????? // Get a dictionary of known category/value pairs
??????? StringDictionary knownCategoryValuesDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);

??????? // Perform a simple query against the data document
??????? return AjaxControlToolkit.CascadingDropDown.QuerySimpleCascadingDropDownDocument(Document,Hierarchy,knownCategoryValuesDictionary,category);
??? }
}

4、CountrysService.xml完整:

<? xml?version="1.0"?encoding="utf-8"? ?>

< CountrysService >

??

??
country? name ="China"

????
state? ="BeiJing"

??????
university? ="BeiJing?University" ? /> ="Tsinghua?University?" ="Renmin?University?" </ state ="ShangHai" ="ShangHai?Jiao?Tong?University" ="FuDan?University" ="FuJian" ="FuJian?Normal?University"

????????
People? ="Chuang?Huang?Leen" ?value ="Chuang?Huang?Leen?(value)" university? ="Xiamen?University"

??
country ="USA" ="USA?(value)" ="New?York" ="New?York?(value)" ="New?York?University" ="New?York?University?(value)" ="SATATE?UNIVERSITY?OF?NEW?YORK?AT?STONY?BROOK" ="SATATE?UNIVERSITY?OF?NEW?YORK?AT?STONY?BROOK?(value)" ="Columbia?University" ="Columbia?University?(value)" ="New?Jersey" ="New?Jersey?(value)" ="Princeton?University" ="Princeton?University?(value)" ="Seton?Hall?University" ="Seton?Hall?University?(value)" ="Boston" ="Boston?(value)" ="Harvard?University?" ="Harvard?University?(value)"


????
="UK" ="UK?(value)" ="London" ="London?(value)" ="University?College?London" ="University?College?London?(value)" ="Imperial?Coll?London" ="Imperial?Coll?London?(value)" ="Univ?Coll?London" ="Univ?Coll?London?(value)" ="Cambridge" ="Cambridge?(value)" ="University?of?Cambridge" ="University?of?Cambridge?(value)" ="University?of?Oxford" ="University?of?Oxford?(value)" ="Manchester" ="Manchester?(value)" ="University?Manchester" ="University?Manchester?(value)"

5、ok!参考How Do I--www.asp.net---video 3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读