2012-04-21 2 views
2

Я использую Asp.Net/C#, мне нужно заполнить DropDownList на изменение другой DropDownList, я мог бы сделать это с помощью SelectedIndexChanged событие, установив AutoPostBack свойства в True из первый dropdownlist, но у меня есть текстовое поле для пароля, которое очищается при обратной передаче, поэтому решение не было выполнимо. Я решил использовать jquery ajax для вызова своего code behind method, но я использую этот подход в первый раз, поэтому я не могу понять, как это сделать Я делаю это. Вот что я пробовал до сих пор, но он не работает для меня.Наполнение DropDownList на изменение другой DropDownList с помощью вызова кода за методом с использованием JQuery

$('#ddlDivisionName').change(function() { 
     alert('j'); 
     $.ajax({ 
      type: "POST", 
      url: "/CreateAccount/CreateAccount.aspx/BranchNameFill", 
      data: "{'index':1}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async: true, 
      cache: false, 
      success: function() { 
       alert('ok'); 
      } 
     }) 
     return false; 
    }); 

[WebMethod] 
     public static string BranchNameFill(int index) 
     { 

      ddlBranchName.Items.Clear(); 
      IEnumerable<BRANCH> br; 
      br = (from b in dt.BRANCHes 
        where b.DIVNO ==index 
        select b); 
      for (int i = 0; i < br.Count(); i++) 
      { 
       ddlBranchName.Items.Add(br.ElementAt(i).NAME.Trim()); 
      } 





     } 
+0

это скорее как не работает таким путем можно даже получить доступ управления из webethod Самый простой способ заключается в создании строка с такими параметрами, как html, заполняет ее вашими параметрами, возвращайтесь с веб-метода и добавьте их в свой выпадающий список. –

+0

@COLDTOLD. Я понял, что мне придется передать массив или что-то подобное, а затем с помощью jquery мне нужно будет заполнить выпадающий список , это ? – freebird

+0

да, вам нужно будет вернуться с вашего веб-метода, а затем, когда у вас есть данные, просто заполните ваш список, используя jquery –

ответ

1

вот простой пример, который я надеюсь, что это поможет вам как-то

[WebMethod] 
     public List<BRANCH> BranchNameFill(int index) 

     { 

      br = (from b in dt.BRANCHes 
         where b.DIVNO ==index 
         select b); 


      return br.ToList(); 

     } 

    ajax client 
    function getCars() { 
     $.ajax({ 
      type: "POST", 
      url: "/CreateAccount/CreateAccount.aspx/BranchNameFill",  
      data: "{'index':1}",  
      contentType: "application/json; charset=utf-8",   
      dataType: "json",   
      success: function(response) {   
      var branches = response.d; 
      $('dropdownlist').empty(); 
      $.each(branch, function(index, branches) {  
       $('dropdownlist').append('<option value="' + branch.ID + '" >' + branch.NAME + '</option>'); 

      }); 

      }, 

      failure: function(msg) { 



      } 

     }); 

     } 

    </script> 
0
$.ajax({ 
       type: "POST", 
       url: "EBService.aspx/getDepts", 
       data: "{cid:" + reg + "}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#<%=ddlCDept.ClientID%>").get(0).options.length = 0; 
         $("#<%=ddlCDept.ClientID%>").get(0).options[0] = new Option("Select name", "0"); 
         $("#lblDeptResult").addClass("loading"); 
         var i = 0; 
         $.each(msg.d, function (index, item) { 
          $("#<%=ddlCDept.ClientID%>").get(0).options[$("#<%=ddlCDept.ClientID%>").get(0).options.length] = new Option(item.c_dept_name, item.c_dept_id); 
          i = i + 1; 
         }); 

[WebMethod] 
    public static List<CDept_MstrBO> getDepts(int cid) 
    { 
     if (CDeptList == null) 
     { 
      CDept_MstrBO objDeptBo = new CDept_MstrBO(); 
      objDeptBo.companyID = 1; 
      CDeptList = objDeptBo.getCDeptList(objDeptBo); 
     } 
     List<CDept_MstrBO> deptList = CDeptList.Where(d => d.c_id == cid).ToList(); 
     return deptList; 

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