Tuesday, May 15, 2018

Bind DropDownList using JavaScript and ASP.Net AJAX and Web Method

Add this code on your asp.x page 

<head runat="server">

    <title></title>

    <script src="Scripts/jquery-3.1.1.js"></script>



</head>

<body>

    <form id="form1" runat="server">

        <div>

            <asp:DropDownList ID="RejectionReasons" runat="server"></asp:DropDownList>

            <label id="lblRequired" style="color: red; float: left; text-align: left !important"></label>

            <asp:Button ID="btnAction" runat="server" CssClass="button" OnClick="ActionPopUp_Click" CausesValidation="True" Text="" ValidationGroup="SaveRR" OnClientClick="return isRejectReasonSelected();" />

            <asp:HiddenField runat="server" ID="hdn_SelectedReasonText" />

            <asp:HiddenField runat="server" ID="hdn_SelectedReasonID" />

        </div>

    </form>
    <script>

   function isRejectReasonSelected()
        {
            $('#lblRequired').text('');
            var isAnyItemSelected = false;
            $('#<%=RejectionReasons.ClientID%> :selected').each(function(i, selected){
                isAnyItemSelected = true;
             
            });
            if(isAnyItemSelected){
                var values = "";
                var text = "";
                var selected = $("[id*=RejectionReasons] option:selected");
                selected.each(function () {
                    values += $(this).val() + "," ;
                    text += $(this).html() + ";" ;
                });
                $('#<%=hdn_SelectedReasonText.ClientID%>').val(text);
                $('#<%=hdn_SelectedReasonID.ClientID%>').val(values);
                return isAnyItemSelected;
            }
            else
            {
                $('#lblRequired').text('Please select reason');
                return isAnyItemSelected;
            }


         
        }

        $(document).ready(function () {
                        var l_id =$("input[id*='hdn_parm']").val();  // I need to pass this on server side
                        var url = 'Details.aspx/DropDownBinding'
                        $.ajax({
                            url: url,
                            type: 'POST',
                            data: JSON.stringify({
                                l_id: l_id
                            }),
                            contentType: 'application/json; charset=utf-8',
                            dataType: "json",
                            success: function (response) {
                                $.each(response.d, function (i, val) { //bind data
                                    $("[id*=RejectionReasons]").append('<option value="' + val[1] + '">' + val[0] + '</option>');
                     

                            },
                            error: function (request, status, error) {

                            }
                        });
    });
    </script>
</body>

Add this code on server side:

using System.Web.Services;
[WebMethod(EnableSession = true)]
public static List<string[]> DropDownBinding(string l_id)
{
    Customer obj = new Customer();
    DataSet ds;
    ds = obj.getdata(l_id); // get data from database
    DataTable dt = ds.Tables(0);
    List<string[]> list = new List<string[]>();
    foreach (DataRow r in dt.Rows)
    {
        string[] a = new string;
        a[0] = r(0).ToString();
        a[1] = r(1).ToString();
        list.Add(a);
    }

    return list;
}