





























参考:asp.net AJAX中的CascadingDropDown控件使用心得
官方: CascadingDropDown Demonstration,Using CascadingDropDown with a Database
http://www.ajaxasp.net.cn/Demos/CascadingDropDown/CascadingDropDown.aspx
斜体 属性为可选属性:
<ajaxToolkit:CascadingDropDown ID="CDD1" runat="server"TargetControlID="DropDownList2"
Category="Model"
PromptText="Please select a model"
LoadingText="[Loading models...]"
ServicePath="CarsService.asmx"
ServiceMethod="GetDropDownContents"
ParentControlID="DropDownList1"
SelectedValue="SomeValue" />
[System.Web.Services.WebMethod]注意:[System.Web.Script.Services.ScriptMethod]
public CascadingDropDownNameValue[] GetDropDownContents(
string knownCategoryValues, string category) { ... }
[System.Web.Services.WebMethod]注意:[System.Web.Script.Services.ScriptMethod]
public CascadingDropDownNameValue[] GetDropDownContents(
string knownCategoryValues,
string category, string contextKey) { ... }
自己写的代码:
服务端代码:

[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static AjaxControlToolkit.CascadingDropDownNameValue[] GetParentService(string knownCategoryValues, string category)
{
System.Data.DataSet ds = Agr.AgrOperate.GetServiceItemsBy(0);
if (ds.Tables[0].Rows.Count > 0)
{
System.Collections.Generic.List<AjaxControlToolkit.CascadingDropDownNameValue> Values
= new System.Collections.Generic.List<AjaxControlToolkit.CascadingDropDownNameValue>();
Values.Add(new AjaxControlToolkit.CascadingDropDownNameValue("", "-1"));
foreach (System.Data.DataRow dr in ds.Tables[0].Rows)
{
Values.Add(new AjaxControlToolkit.CascadingDropDownNameValue(dr["ItemsName"].ToString(), dr["PID"].ToString()));
}
Values.Add(new AjaxControlToolkit.CascadingDropDownNameValue("其它", "99"));

return Values.ToArray();
}
else
{
return null;
}
}

//加载子受理项目
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static AjaxControlToolkit.CascadingDropDownNameValue[] GetSubService(string knownCategoryValues, string category)
{
System.Collections.Specialized.StringDictionary kv
= AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
int PID;
//"ParentID"是上一级CascadingDropDown设置的category属性名称
if (!kv.ContainsKey("ParentID") || !Int32.TryParse(kv["ParentID"], out PID))
{
return null;
}

System.Data.DataSet ds = Agr.AgrOperate.GetServiceItemsBy(PID);
if (ds.Tables[0].Rows.Count > 0)
{
System.Collections.Generic.List<AjaxControlToolkit.CascadingDropDownNameValue> Values
= new System.Collections.Generic.List<AjaxControlToolkit.CascadingDropDownNameValue>();
Values.Add(new AjaxControlToolkit.CascadingDropDownNameValue("", "-1"));
foreach (System.Data.DataRow dr in ds.Tables[0].Rows)
{
Values.Add(new AjaxControlToolkit.CascadingDropDownNameValue(dr["ItemsName"].ToString(), dr["PID"].ToString()));
}

return Values.ToArray();
}
else
{
return null;
}
}
HTML页面代码:

<td align="right">
协议受理项目
</td>
<td align="left">
<asp:DropDownList ID="drplstParentService" runat="server" BackColor="#FFFFC0" CssClass="cssInputBox"
ToolTip="请选择要查询的受理项目" Width="100%">
</asp:DropDownList>
<cc1:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="drplstParentService"
Category="ParentID" LoadingText="加载中
" PromptText="" ServiceMethod="GetParentService">
</cc1:CascadingDropDown>
</td>
<td align="right">
子受理项目
</td>
<td align="left">
<asp:DropDownList ID="drplstSubService" runat="server" BackColor="#FFFFC0" CssClass="cssInputBox"
ToolTip="请选择要查询的子受理项目" Width="100%">
</asp:DropDownList>
<cc1:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="drplstSubService"
Category="SubID" LoadingText="加载中
" PromptText="" ServiceMethod="GetSubService" ParentControlID="drplstParentService">
</cc1:CascadingDropDown>
</td>
另:使用 CascadingDropDown 要设置 EnableEventValidation="false" ,哪位高人知道有其他做法吗?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。