How to fill a DropDown using Jquery Ajax Call?

前端 未结 4 721
南方客
南方客 2020-12-09 22:20

I have a WebMethod which gets data that I want to fill DropDown with in a DataSet. Currently I am filling the dropdown using a hardcoded object. But I want to replace this

相关标签:
4条回答
  • 2020-12-09 22:35
     var theDropDown = document.getElementById("myDropDownLisTId");
                    theDropDown.length = 0;
                    $.each(items, function (key, value) {
    
                        $("#myDropDownLisTId").append($("<option></option>").val(value.PKId).html(value.SubDesc));
    

    here "SubDesc",PKId describes the value getting out of Database., u need to separate your value from dataset.

    0 讨论(0)
  • 2020-12-09 22:45
    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!");
            }
        });
    }
    
    0 讨论(0)
  • 2020-12-09 22:47

    From the WebMethod, don't send DataSet directly, send 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();
    }
    

    Before Ajax call...

    var myDropDownList = $('.myDropDownLisTId');
    

    Try like below...(inside Ajax call)

    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);
         });
    },
    

    Note:

    1. OptionValue and OptionText are the Columns of DataSet Table.

    2. $(response.d).find('Table0').each(function (){}) - Here Table0 is the name of Table inside DataSet.

    0 讨论(0)
  • 2020-12-09 22:55
    [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 DataSetToJSON(ds); 
    
         }
    
    public static string DataSetToJSON(DataSet ds)
    {
    
        Dictionary<string, object> dict = new Dictionary<string, object>();
        foreach (DataTable dt in ds.Tables)
        {
            object[] arr = new object[dt.Rows.Count + 1];
    
            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                arr[i] = dt.Rows[i].ItemArray;
            }
    
            dict.Add(dt.TableName, arr);
        }
    
        var lstJson = Newtonsoft.Json.JsonConvert.SerializeObject(dict);
        return lstJson;
    }
    

    Ajax Call

    function GetAssociation() {
    
            var myDropDownList = $("#myDropDownLisTId");
            var post_data = JSON.stringify({ "name": "xyz"});
            $.ajax({
                type: "POST",
                url: "test.aspx/GetDropDownDataWM",
                data: post_data,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    json_data = JSON.parse(response.d);
                    myDropDownList.empty();
                    for(i=0; i<json_data.Table.length; i++)
                    {
    
                        myDropDownList.append($("<option></option>").val(json_data.Table[i][0]).html(json_data.Table[i][1]));
                    }
    
                },
                failure: function (response) {
                    alert(response.d);
                }
            });
        }
    
    0 讨论(0)
提交回复
热议问题