[WebService(Namespace= http://tempuriorg/)] [WebServiceBinding(ConformsTo = WsiProfilesBasicProfile_)] [SystemWebScriptServicesScriptService] public class CarsService : SystemWebServicesWebService {
【第六步】在这个服务类中我们将编写一个WebMethod—GetModelsByCarId它将返回一个CascadingDropDownNameValue数组该方法的具体定义形式如下所示 [WebMethod] public CascadingDropDownNameValue[] GetModelsByCarId(string knownCategoryValues string category) {
这里的参数knowCategoryValues将包含在CascadingDropDown控件中的Category定义值(以;分隔符隔开) //根据:字符使用;分隔符分离knownCategoryValues //相应于索引1处的字符串是从dropdownlist中选择的CarId string[] _categoryValues = knownCategoryValuesSplit(: ;);
通过分离knowCategoryValues我们得到位于string[] _categoryValues中索引处选择的汽车Id //转换string[]中索引1对应元素以便得到CarId int _carID = ConvertToInt(_categoryValues[]);
接下来我们还要创建一个类型CascadingDropDownNameValue的泛型列表用于存储由CarsModelTableAdapters返回的值 //创建CascadingDropDownNameValue的一个列表以存储汽车模型数据List_carModels=new List();
接下来循环遍历GetModelsByCarId方法返回的DataTable中所有的DataRow并且把它们添加到CascadingDropDownNameValue类型List //创建一个CarModels TableAdapter的实例 dsCarModelsTableAdaptersCarModelsTableAdapter _carModelAdapter = new dsCarModelsTableAdaptersCarModelsTableAdapter(); //对于每一个由方法GetModelsByCarId返回的DataTable中的第一个DataRow //把modelname和modelid数据添加到Listforeach (DataRow _row in _carModelAdapterGetModelsByCarId(_carID)) { _carModelsAdd(new CascadingDropDownNameValue(_row[ModelName]ToString() _row[ModelId]ToString())); }
注意该CascadingDropDown需要一个CascadingDropDownNameValue[]以便显示于目标DropDownList中 下面展示了本文中所用唯一的Web方法的完整定义 // Web方法—根据一个给定的carId取得所有汽车模型信息 //输入参数—层叠式下拉列表框提供的knownCategoryValues //输出参数—CascadingDropDownNameValue数组 [WebMethod] public CascadingDropDownNameValue[] GetModelsByCarId(string knownCategoryValues string category) { //根据:字符使用;分隔符分离knownCategoryValues //对于第一个dropdownlist来说该值为undefined: id of the // dropdownelement //相应于索引1处的字符串是从dropdownlist中选择的CarId string[] _categoryValues = knownCategoryValuesSplit(: ;); //转换string[]中索引1对应元素以便得到CarId int _carID = ConvertToInt(_categoryValues[]); // 创建一个CascadingDropDownNameValue的List结构以便存储汽车模型数据List _carModels = new List();//创建一个CarModels TableAdapter的实例 dsCarModelsTableAdaptersCarModelsTableAdapter _carModelAdapter = new dsCarModelsTableAdaptersCarModelsTableAdapter(); //对于每一个由方法GetModelsByCarId返回的DataTable中的第一个datarow //把modelname和modelid数据添加到Listforeach (DataRow _row in _carModelAdapterGetModelsByCarId(_carID)) { _carModelsAdd(new CascadingDropDownNameValue(_row[ModelName]ToString() _row[ModelId]ToString())); } //转换成数组并返回相应的值 return _carModelsToArray(); }
[] [] [] [] [] [] |