您的位置:首页 > 运维架构

使用CascadingDropDown实现国家省市联动控件

2010-07-30 14:30 459 查看
首先放三个DropDownList控件和,和CascadingDropDown控件,并设置属性如下:

(不要忘记在页首放置Script Manager)

]<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddlCountry" runat="server" AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList ID="ddlProvince" runat="server" AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="true">
</asp:DropDownList>
<cc1:CascadingDropDown ID="CascadingDropDown1" runat="server" LoadingText="Loading...."
PromptText="请选择" TargetControlID="ddlCountry" ServiceMethod="GetCountry" ServicePath="WebService.asmx"
Category="Country" ParentControlID="">
</cc1:CascadingDropDown>
<cc1:CascadingDropDown ID="CascadingDropDown2" runat="server" LoadingText="Loading...."
PromptText="请选择" TargetControlID="ddlProvince" ParentControlID="ddlCountry" SelectedValue=""
Category="Province" ServicePath="WebService.asmx" ServiceMethod="GetProvince">
</cc1:CascadingDropDown>
<cc1:CascadingDropDown ID="CascadingDropDown3" runat="server" LoadingText="Loading...."
PromptText="请选择" TargetControlID="ddlCity" ParentControlID="ddlProvince" SelectedValue=""
Category="City" ServicePath="WebService.asmx" ServiceMethod="GetCity">
</cc1:CascadingDropDown>
</ContentTemplate>
</asp:UpdatePanel>


然后在后台新建一个提供数据的WebService,代码如下:

]/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(true)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{

[WebMethod]
public CascadingDropDownNameValue[] GetCountry(string knownCategoryValues, string category)
{
DataTable dt = new DataTable();
dt.Columns.Add("Country", typeof(string));
dt.Columns.Add("ID", typeof(int));

DataRow dr1 = dt.NewRow();
dr1["ID"] = 1;
dr1["Country"] = "中国";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 2;
dr2["Country"] = "日本";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 3;
dr3["Country"] = "美国";
dt.Rows.Add(dr3);

List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
foreach (DataRow dr in dt.Rows)
{
string sEmployee = (string)dr["Country"];
int iEmployee = (int)dr["ID"];
values.Add(new CascadingDropDownNameValue(sEmployee, iEmployee.ToString()));
}
return values.ToArray();
}

[WebMethod]
public CascadingDropDownNameValue[] GetProvince(string knownCategoryValues, string category)
{

StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
int iEmployee;
if (!kv.ContainsKey("Country") || !Int32.TryParse(kv["Country"], out iEmployee))
{
return null;
}
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Province", typeof(string));
if (iEmployee == 1)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 11;
dr1["Province"] = "江苏";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 12;
dr2["Province"] = "陕西";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 13;
dr3["Province"] = "四川";
dt.Rows.Add(dr3);
}
else if (iEmployee == 2)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 21;
dr1["Province"] = "本洲岛";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 22;
dr2["Province"] = "九州";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 23;
dr3["Province"] = "四国";
dt.Rows.Add(dr3);
}
else if (iEmployee == 3)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 31;
dr1["Province"] = "加利福尼亚";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 32;
dr2["Province"] = "佛罗里达";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 33;
dr3["Province"] = "得克萨斯";
dt.Rows.Add(dr3);
}
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
foreach (DataRow dr in dt.Rows)
{
string sOrder = dr["Province"].ToString();
int iOrder = (int)dr["ID"];
values.Add(new CascadingDropDownNameValue(sOrder, iOrder.ToString()));
}
return values.ToArray();
}

[WebMethod]
public CascadingDropDownNameValue[] GetCity(string knownCategoryValues, string category)
{
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
int iOrder;
if (!kv.ContainsKey("Province") || !Int32.TryParse(kv["Province"], out iOrder))
{
return null;
}
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("City", typeof(string));
if (iOrder == 11)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 111;
dr1["City"] = "南京";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 113;
dr2["City"] = "苏州";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 113;
dr3["City"] = "扬州";
dt.Rows.Add(dr3);
}
else if (iOrder == 12)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 121;
dr1["City"] = "西安市";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 122;
dr2["City"] = "榆林市";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 123;
dr3["City"] = "渭南市";
dt.Rows.Add(dr3);
}
else if (iOrder == 13)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 131;
dr1["City"] = "成都市";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 132;
dr2["City"] = "都江堰市";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 133;
dr3["City"] = "绵阳市";
dt.Rows.Add(dr3);
}
else if (iOrder == 21)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 211;
dr1["City"] = "东京都";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 212;
dr2["City"] = "京都府";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 213;
dr3["City"] = "大阪府";
dt.Rows.Add(dr3);
}
else if (iOrder == 22)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 221;
dr1["City"] = "长崎县";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 222;
dr2["City"] = "冲绳县";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 223;
dr3["City"] = "宫崎县";
dt.Rows.Add(dr3);
}
else if (iOrder == 23)
{
DataRow dr1 = dt.NewRow();
dr1["ID
a235
"] = 231;
dr1["City"] = "徳岛县";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 232;
dr2["City"] = "香川县";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 233;
dr3["City"] = "高知县";
dt.Rows.Add(dr3);
}
else if (iOrder == 31)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 311;
dr1["City"] = "萨克拉门托";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 312;
dr2["City"] = "洛杉矶";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 313;
dr3["City"] = "圣弗朗西斯科";
dt.Rows.Add(dr3);
}
else if (iOrder == 32)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 321;
dr1["City"] = "迈阿密";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 322;
dr2["City"] = "杰克逊维尔";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 323;
dr3["City"] = "圣彼得斯堡";
dt.Rows.Add(dr3);
}
else if (iOrder == 33)
{
DataRow dr1 = dt.NewRow();
dr1["ID"] = 331;
dr1["City"] = "休斯敦";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["ID"] = 332;
dr2["City"] = "达拉斯";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["ID"] = 333;
dr3["City"] = "奥斯汀";
dt.Rows.Add(dr3);
}
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
foreach (DataRow dr in dt.Rows)
{
string UnitPrice = dr["City"].ToString();
int intOrder = (int)dr["ID"];
values.Add(new CascadingDropDownNameValue(UnitPrice, intOrder.ToString()));
}
return values.ToArray();
}
}
}


All Right,It's done.

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息