none
CascadingDropDown 出现method error 500 或者12030/12031 RRS feed

  • 问题

  • <asp:DropDownList ID="DepartmentDrop" runat="server" OnSelectedIndexChanged="DepartmentDrop_SelectedIndexChanged"></asp:DropDownList>
                    <cc1:CascadingDropDown ID="department" runat="server" TargetControlID="DepartmentDrop" Category="department" PromptText="请选择部门"
                     LoadingText="加载中......" ServicePath="DepartmentService.asmx" ServiceMethod="GetDepartmentContents"></cc1:CascadingDropDown>
                    科室人员: <asp:DropDownList ID="personalLeaveEmployeeNameh" runat="server"></asp:DropDownList>
                    <cc1:CascadingDropDown ID="employeeByDepartment" runat="server" TargetControlID="personalLeaveEmployeeNameh"
                     Category="employee" PromptText="请选择人员" ParentControlID="DepartmentDrop"
                     LoadingText="加载中......" ServicePath="DepartmentService.asmx" ServiceMethod="GetEmployeeByDepartmentContents"></cc1:CascadingDropDown>

    这是2个DropDownList和CascadingDropDown,下面是web service 的方法
        [WebMethod]
        public AjaxControlToolkit.CascadingDropDownNameValue[] GetDepartmentContents(string knownCategoryValues, string category)
        {
            DepartmentModel depModel = new DepartmentModel();
            DepartmentLogic depLogic = new DepartmentLogic();
            List<CascadingDropDownNameValue>  departmentList = new List<CascadingDropDownNameValue>();
            DataSet depDs = depLogic.GetAllDepartmentInfo();
            DataTable depDt = depDs.Tables[0];
            foreach (DataRow dr in depDt.Rows)
            {
                string departmentName = dr["departmentName"].ToString();
                int departmentId = Convert.ToInt16(dr["departmentId"]);
                departmentList.Add(new CascadingDropDownNameValue(departmentName, departmentId.ToString()));

            }
            return departmentList.ToArray();

        }

        public AjaxControlToolkit.CascadingDropDownNameValue[] GetEmployeeByDepartmentContents(string knownCategoryValues, string category)
        {
            StringDictionary kv = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
            int departmentId;
            if (!kv.ContainsKey("department") || !Int32.TryParse(kv["department"], out departmentId))
            {
                return null;
            }
            LogLogic logLogic = new LogLogic();
            DataSet employeeNameByDepartmentId = new DataSet();
            employeeNameByDepartmentId = logLogic.GetEmployeeNameByDepartmentId(8);
            List<CascadingDropDownNameValue> employeeList = new List<CascadingDropDownNameValue>();
            DataTable emnDt = employeeNameByDepartmentId.Tables[0];
            foreach (DataRow dr in emnDt.Rows)
            {
                string employeeName = dr["employeeName"].ToString();
                string employeeNo = dr["employeeNo"].ToString();
                employeeList.Add(new CascadingDropDownNameValue(employeeName, employeeNo));

            }
            return employeeList.ToArray();
        }
    问题是 第一个GetDepartmentContents可以获得数据,根据第一个DropDownList中的部门,第二个DropDownList联动,出现该部门的人员,可是出现Method error 500/12030/12031的错误。
    请问我的代码中存在什么问题没有?我也试着查看数据的问题,是可以获得数据的,但是就是联动的时候没有数据。请教该怎么处理?
    2009年12月1日 2:54

答案

  • 1、webservice中的方法参数签名必须是string knownCategoryValues, string category似乎不能修改。
    2、[System.Web.Script.Services.ScriptService]必须在类前面。
    3、webservice路径错误。
    4、应用方法名错误。
    2009年12月1日 8:15

全部回复

  • 1、webservice中的方法参数签名必须是string knownCategoryValues, string category似乎不能修改。
    2、[System.Web.Script.Services.ScriptService]必须在类前面。
    3、webservice路径错误。
    4、应用方法名错误。
    2009年12月1日 8:15
  • 能就我的代码分析下吗?我也知道这些注意事项,自己也修正过,可还是存在问题。
    具体问题具体分析,可以吗?
    2009年12月1日 9:16
  • 问题解决了 谢谢你
    问题出在第二个方法前没有加上    [WebMethod]   ,真是粗心大意。
    2009年12月1日 9:22
  • 解决就好

    2009年12月1日 9:24
  • “webservice中的方法参数签名必须是string knownCategoryValues, string category似乎不能修改。”
    非常感谢,我就是自作聪明的更改为自己想要的参数,结果这个问题困扰了一天。终于解决了

    2009年12月22日 23:55