2014-04-09 56 views
5

我有一個WebMethod獲取數據,我想要在一個DataSet中填充DropDown。 目前我正在使用硬編碼對象填充下拉列表。但我想用webmethod返回的數據替換這個硬編碼的對象。如何使用Jquery Ajax調用填充DropDown?

[System.Web.Services.WebMethod] 
     public static string GetDropDownDataWM(string name) 
     { 
      //return "Hello " + name + Environment.NewLine + "The Current Time is: " 
      // + DateTime.Now.ToString(); 

      var msg = "arbaaz"; 

      string[] name1 = new string[1]; 
      string[] Value = new string[1]; 
      name1[0] = "@Empcode"; 
      Value[0] = HttpContext.Current.Session["LoginUser"].ToString().Trim(); 
      DataSet ds = new DataSet(); 
      dboperation dbo = new dboperation(); 
      ds = dbo.executeProcedure("GetDropDownsForVendor", name1, Value, 1); 

      return ds.GetXml(); 

     } 

客戶端(更新1):

<script type = "text/javascript"> 
    function GetDropDownData() { 
     var myDropDownList = $('.myDropDownLisTId'); 

     $.ajax({ 
      type: "POST", 
      url: "test.aspx/GetDropDownDataWM", 
      data: '{name: "abc" }', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       $.each(jQuery.parseJSON(data.d), function() { 
        myDropDownList.append($("<option></option>").val(this['FieldDescription']).html(this['FieldCode'])); 
       }); 
      }, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
    } 
    function OnSuccess(response) { 
     console.log(response.d); 
     alert(response.d); 
    } 
</script> 
+0

你的回答是什麼樣的? –

+0

@Arbaaz,你編輯的代碼(在你的Q中)的工作? – Vikram

回答

11
function GetDropDownData() { 
    $.ajax({ 
     type: "POST", 
     url: "test.aspx/GetDropDownDataWM", 
     data: '{name: "abc" }', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(data.d) 
       { 
        $.each(data.d, function(){ 
         $(".myDropDownLisTId").append($("<option  />").val(this.KeyName).text(this.ValueName)); 
        }); 
       }, 
     failure: function() { 
      alert("Failed!"); 
     } 
    }); 
} 
1

WebMethod,並不直接DataSet,送XML ...

[System.Web.Services.WebMethod] 
public static string GetDropDownDataWM(string name) 
{ 
    DataSet ds = new DataSet(); 
    ds.Tables.Add("Table0"); 
    ds.Tables[0].Columns.Add("OptionValue"); 
    ds.Tables[0].Columns.Add("OptionText"); 
    ds.Tables[0].Rows.Add("0", "test 0"); 
    ds.Tables[0].Rows.Add("1", "test 1"); 
    ds.Tables[0].Rows.Add("2", "test 2"); 
    ds.Tables[0].Rows.Add("3", "test 3"); 
    ds.Tables[0].Rows.Add("4", "test 4"); 

    return ds.GetXml(); 
} 

前阿賈克斯致電...

var myDropDownList = $('.myDropDownLisTId'); 

嘗試像下面......(內阿賈克斯調用)

success: function (response) { 
    debugger; 

    $(response.d).find('Table0').each(function() { 
      var OptionValue = $(this).find('OptionValue').text(); 
      var OptionText = $(this).find('OptionText').text(); 
      var option = $("<option>" + OptionText + "</option>"); 
      option.attr("value", OptionValue); 

      myDropDownList.append(option); 
    }); 
}, 

注:

  1. OptionValueOptionTextDataSet表中的列。

  2. $(response.d).find('Table0').each(function(){}) - 這裏Table0DataSet裏面的表名。

+0

但我在哪裏調用GetDropDownData()?在filldd()正確嗎? – Arbaaz

+0

@Arbaaz是的,在'filldd()'函數中。 –

+0

無法加載資源:服務器響應狀態爲500(內部服務器錯誤 – Arbaaz

0
var theDropDown = document.getElementById("myDropDownLisTId"); 
       theDropDown.length = 0; 
       $.each(items, function (key, value) { 

        $("#myDropDownLisTId").append($("<option></option>").val(value.PKId).html(value.SubDesc)); 

這裏「SubDesc」,PKID描述值失控數據庫,ü需要你的價值,從數據集分離。