Cascading dropdownlist jQuery does not retain value on post back.

Posted by John Smith on Stack Overflow See other posts from Stack Overflow or by John Smith
Published on 2010-05-26T08:03:54Z Indexed on 2010/05/26 8:21 UTC
Read the original article Hit count: 666

Filed under:
|
|
|

I have two html select server control on an add data form page.

the user selects a value in the first html select server control and then values are populated into the second html select server control with jquery.

The problem is when a a user clicks the save button and the page posts back, the values are no longer in the drop down list populated by jQuery.

The drop downlist is a html server control, shouldn't it retain the values on post-back?

How can I retain the values and save the selected value to the database?

 $(document).ready(function() {
            $("#<%=ddlCourseWare.ClientID %>").change(function() {
                var courseWareId = this.value;

                try {

                    $.ajax({
                        type: "POST",
                        url: "Left_SubCategory.aspx/GetTabData",
                        data: "{courseWareId:" + courseWareId + "}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(data) {
                            var result = json_parse(data.d);
                            $("#<%=ddlTabType.ClientID %>")[0].innerHTML = '';

                            if (result.length > 0) {
                                $.each(result, function(key, item) {
                                    $("#<%=ddlTabType.ClientID %>").append($("<option></option>").val(item.id).html(item.TabName));
                                });
                                                               }
                            else {

                                $("#<%=ddlTabType.ClientID %>").append($("<option></option>").val('0').html('--Select--'));
                                                               }

                        },
                        error: function(request, status, error) {
                            alert(request.responseText);
                        }


                    });
                }
                catch (ex) {
                    alert(ex);
                }

            });

        });


HTML

 <select id="ddlCourseWare" name="ddlCourseWare" runat="server" Width="230px" class="TextBox" Height="18px" >

 <select id="ddlTabType" name="ddlTabType" runat="server" Width="230px" class="TextBox" Height="18px" onchange="BindMainCat();">
     <option>--Select--</option>
 </select>

C#

 private void BindCourseWare()
        {
            ddlCourseWare.DataSource = courseWare.GetCourseWare();
            ddlCourseWare.DataTextField = "CourseWareType";
            ddlCourseWare.DataValueField = "id";
            ddlCourseWare.DataBind();
            ddlCourseWare.Items.Insert(0, "----Select Course Ware----");
        }

        [WebMethod]
        public static string GetTabData(int courseWareId)
        {
            var result = new CourseWare().GetCourseTabByCoursewareId(courseWareId);
            JavaScriptSerializer json_tabs = new JavaScriptSerializer();
            string jsonArray_tabs = json_tabs.Serialize(result);
            return jsonArray_tabs;
        }




protected void btnSave_Click(object sender, EventArgs e)
        {
            int mainCategoryID1 = int.Parse(ddlTabType.Value); // not working

int mainCategoryID2 = int.Parse(Request["ctl00$ContentPlaceHolder1$ddlTabType"]);
 // working but always return same value means the upper value (selected index 1) 
          } 

© Stack Overflow or respective owner

Related posts about jQuery

Related posts about AJAX