在使用CascadingDropdownList的時候需要注意的問題:
(1)只能通過Web Service的方式來使用這個控制項
(2)建立的Web Service 如下[System.Web.Script.Services.ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class BasicTypes : System.Web.Services.WebService
{
public BasicTypes()
{
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public AjaxControlToolkit.CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category)
{
DataTable dt = GetDataTable("Select * from BasicType");
List<AjaxControlToolkit.CascadingDropDownNameValue> values = new List<AjaxControlToolkit.CascadingDropDownNameValue>();
foreach (DataRow dr in dt.Rows)
{
values.Add(new AjaxControlToolkit.CascadingDropDownNameValue(dr["Type"].ToString(), dr["Id"].ToString()));
}
return values.ToArray();
}
}
注意紅色代碼部分。
在CascadingDropdownList的Page method方法中,也就是在使用這個控制項的頁面的後台代碼中,調用Web Service中的(3)WebMethod的名字必須與控制項中設定的WebMethod相同。如中粗體紫色部分所示:<ajaxToolkit:CascadingDropDown ID="ccdDataTypeParents" runat="server" Enabled="True"
ServiceMethod="GetDropdownParents" ParentControlID=""
UseContextKey="True" ServicePath="BasicTypes.asmx"
TargetControlID="ddlDataTypeParents"
Category="DataTypeParentsId" PromptText="請選擇父類型"
LoadingText="正在載入父類型" SelectedValue="">
</ajaxToolkit:CascadingDropDown>
(4)在PageMethod中的使用方法如下:[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static AjaxControlToolkit.CascadingDropDownNameValue[] GetDropdownParents(string knownCategoryValues, string category)
{
return new BasicTypes().GetDropDownParents(knownCategoryValues, category);
}
注意要加入紫色代碼部分。系統會自己產生紫色的部分,但是不同,所以把系統自動產生 的替換掉就行了(沒有替換的我沒有試過,只是目前這樣做可以工作)。
當出現500錯誤的時候,核對一下上面所講的注意事項。