2015-06-17 4 views
0

Я хочу создать cascadingdropdown с помощью ajaxtoolkit, но с ошибкой.ajaxToolkit: CascadingDropDown получил ошибку

поскольку новая версия ajaxcontroltoolkit есть удалить ToolkitScriptManager, поэтому я использую ScriptManager

<ajaxToolkit:CascadingDropDown 
    ID="cdlOffice" 
    TargetControlID="DropDownList1" 
    PromptText="Select Office" 
    PromptValue="" 
    ServicePath="~/WebService1.asmx" 
    ServiceMethod="GetLocation" 
    runat="server" 
    Category="LocationId" 
    LoadingText="Loading..." /> 

<div class="form-group"> 
          <asp:Label runat="server" AssociatedControlID="DropDownList1" CssClass="col-md-2 control-label">Location</asp:Label> 
          <div class="col-md-10"> 
           <asp:DropDownList id="DropDownList1" runat="server" class="select2-me" data-placeholder="--SELECT--" data-rule-required="true" style="width:250px;" /> 
          </div> 
         </div> 

и WebService1.asmx, как следовать

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class WebService1 : System.Web.Services.WebService 
    { 

     [WebMethod] 
     public CascadingDropDownNameValue[] GetLocation(string knownCategoryValues) 
     { 
      string query = "SELECT DISTINCT ITOFF_NAME, ITOFF_ID FROM ITOFF_TBL ORDER BY ITOFF_NAME"; 
      List<CascadingDropDownNameValue> Location = GetData(query); 
      return Location.ToArray(); 
     } 

     [WebMethod] 
     public CascadingDropDownNameValue[] GetFloor(string knownCategoryValues) 
     { 
      string Location = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)["LocationId"]; 
      string query = string.Format("SELECT ITOFF_LEVEL, ITOFF_ID FROM ITOFF_TBL WHERE ITOFF_NAME = {0}", Location); 
      List<CascadingDropDownNameValue> Floor = GetData(query); 
      return Floor.ToArray(); 
     } 

     private List<CascadingDropDownNameValue> GetData(string query) 
     { 
      string conString = ConfigurationManager.ConnectionStrings["ITFORMConnectionString"].ConnectionString; 
      SqlCommand cmd = new SqlCommand(query); 
      List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
      using (SqlConnection con = new SqlConnection(conString)) 
      { 
       con.Open(); 
       cmd.Connection = con; 
       using (SqlDataReader reader = cmd.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         values.Add(new CascadingDropDownNameValue 
         { 
          name = reader[0].ToString(), 
          value = reader[1].ToString() 
         }); 
        } 
        reader.Close(); 
        con.Close(); 
        return values; 
       } 
      } 
     } 

    } 

я имею ошибку показывая

Unhandled exception at line 6, column 97862 in http://localhost:60461/Scripts/WebForms/MsAjax/MicrosoftAjax.js

0x800a138f - JavaScript runtime error: Unable to get property 'webServiceFailedNoMsg' of undefined or null reference

весь код, который я узнал из Google. есть что-то не хватает или не так?

ответ

0

Попробуйте удалить Строка Param 'knownCategoryValues' от вас getLocation() определение веб-метод:

[WebMethod] 
      public CascadingDropDownNameValue[] GetLocation() 
      { 
       string query = "SELECT DISTINCT ITOFF_NAME, ITOFF_ID FROM ITOFF_TBL ORDER BY ITOFF_NAME"; 
       List<CascadingDropDownNameValue> Location = GetData(query); 
       return Location.ToArray(); 
      } 

И удалить locationID свойство из из определения каскадных DropDown.

Или, если вы получаете идентификатор location из другого раскрывающегося списка, оставьте его и определите его как ParentControlID

Смежные вопросы