sunil mali Ответов: 1

Asp.net каскадный выпадающий список jquery


Уважаемая Команда Проекта Кодекса ,

Пожалуйста, решите мою кодовую головоломку, я много пробовал и не хочу сдаваться,

Я построил каскадный выпадающий список с помощью asp.net jquery
Код для каскадного выпадающего списка выглядит следующим образом,

Мой JSCRIPT
<script type="text/javascript">
     $(function () {
         $('#<%=ddlclassification2.ClientID %>').attr('disabled', 'disabled');
         $('#<%=ddlSubCategory.ClientID %>').attr('disabled', 'disabled');
         $('#<%=ddlclassification2.ClientID %>').append('<option selected="selected" value="0">Select Category</option>');
         $('#<%=ddlSubCategory.ClientID %>').empty().append('<option selected="selected" value="0">Select SubCategory</option>');

         $('#<%=ddlclassification1.ClientID %>').change(function () {
             var Entity = $('#<%=ddlclassification1.ClientID%>').val()
             $('#<%=ddlclassification2.ClientID %>').removeAttr("disabled");
             $('#<%=ddlSubCategory.ClientID %>').empty().append('<option selected="selected" value="0">Select SubCategory</option>');
             $('#<%=ddlSubCategory.ClientID %>').attr('disabled', 'disabled');
             $.ajax({
                 type: "POST",
                 url: "DigitalPrepping.aspx/BindCategory",
                 data: "{'Entity':'" + Entity + "'}",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 success: function (msg) {
                     var j = jQuery.parseJSON(msg.d);
                     var options;
                     for (var i = 0; i < j.length; i++) {
                         options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'
                     }
                     $('#<%=ddlclassification2.ClientID %>').html(options)
                 },
                 error: function (data) {
                     alert('Something Went Wrong')
                 }
             });

         });
         $('#<%=ddlclassification2.ClientID %>').change(function () {
             var Category = $('#<%=ddlclassification2.ClientID%>').val()
             $('#<%=ddlSubCategory.ClientID %>').removeAttr("disabled");
             $.ajax({
                 type: "POST",
                 url: "DigitalPrepping.aspx/BindSubCategory",
                 data: "{'Category':'" + Category + "'}",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 success: function (msg) {
                     var j = jQuery.parseJSON(msg.d);
                     var options;
                     for (var i = 0; i < j.length; i++) {
                         options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'
                     }
                     $('#<%=ddlSubCategory.ClientID %>').html(options)
                 },
                 error: function (data) {
                     alert('Something Went Wrong')
                 }
             });
         })
         $('#<%=rdlist.ClientID %> input').change(function () {
             // The one that fires the event is always the
             // checked one; you don't need to test for this

             var Data = $(this).val();
             $.each(Data.split(/\|/), function (i, val) {
                 if (i == 0) {
                     $('#<%=ddlclassification1.ClientID %>').val($.trim(val));

                 }
                 if (i == 1) {

                     $.ajax({
                         type: "POST",
                         url: "DigitalPrepping.aspx/BindSubCategory",
                         data: "{'Category':'" + Category + "'}",
                         contentType: "application/json; charset=utf-8",
                         dataType: "json",
                         success: function (msg) {
                             var j = jQuery.parseJSON(msg.d);
                             var options;
                             for (var i = 0; i < j.length; i++) {
                                 options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'
                             }
                             $('#<%=ddlSubCategory.ClientID %>').html(options)
                         },
                         error: function (data) {
                             alert('Something Went Wrong')
                         }
                     });

                     $('#<%=ddlclassification2.ClientID %>').val($.trim(val));

                 }
                 if (i == 2) {
                 }
             })

         });
     })
</script>


ASP.NET контроль,

<tr>
    <td>
        <asp:Label ID="lblclassification1" Text="Classification" runat="server"></asp:Label>
    </td>
    <td>
        <asp:DropDownList ID="ddlclassification1" CausesValidation="true" runat="server"

            Width="170px" AutoPostBack="True" ValidationGroup="req" OnSelectedIndexChanged="ddlclassification1_SelectedIndexChanged">
        </asp:DropDownList>
    </td>
</tr>
<tr>
    <td>
        <asp:Label ID="lblClassification2" Text="Category" runat="server"></asp:Label>
    </td>
    <td>
        <asp:DropDownList ID="ddlclassification2" CausesValidation="true" runat="server"

            Width="170px" AutoPostBack="True" ValidationGroup="req" OnSelectedIndexChanged="ddlclassification2_SelectedIndexChanged">
        </asp:DropDownList>
    </td>
</tr>
<tr>
    <td>
        <asp:Label ID="lblClassification3" Text="SubCategory" runat="server"></asp:Label>
    </td>
    <td>
        <asp:DropDownList ID="ddlSubCategory" runat="server" Width="170px" OnSelectedIndexChanged="ddlSubCategory_SelectedIndexChanged">
        </asp:DropDownList>
    </td>
    <td>
        <asp:Label ID="lblTypeTOSearch" runat="server" Text="Type to Search" Visible="False"></asp:Label>
    </td>
</tr>


Код C#.

[WebMethod]
 public static string BindCategory(string Entity)
 {
     BAL_UploadVendorDocument b_up = new BAL_UploadVendorDocument();
     DataTable dt = b_up.GetClassification_2("ZI100115", Entity);

     StringWriter builder = new StringWriter();
     builder.WriteLine("[");
     if (dt.Rows.Count > 0)
     {
         builder.WriteLine("{\"optionDisplay\":\"Select Category\",");
         builder.WriteLine("\"optionValue\":\"0\"},");
         for (int i = 0; i <= dt.Rows.Count - 1; i++)
         {
             builder.WriteLine("{\"optionDisplay\":\"" + dt.Rows[i]["DocumentCategory_Value"] + "\",");
             builder.WriteLine("\"optionValue\":\"" + dt.Rows[i]["DocumentCategory_ID"] + "\"},");
         }
     }
     else
     {
         builder.WriteLine("{\"optionDisplay\":\"Select Category\",");
         builder.WriteLine("\"optionValue\":\"0\"},");
     }
     string returnjson = builder.ToString().Substring(0, builder.ToString().Length - 3);
     returnjson = returnjson + "]";
     return returnjson.Replace("\r", "").Replace("\n", "");
 }

 [WebMethod]
 public static string BindSubCategory(string Category)
 {
     BAL_UploadVendorDocument b_up = new BAL_UploadVendorDocument();
     DataTable dt = b_up.GetClassification_3("ZI100115", Category);

     StringWriter builder = new StringWriter();
     builder.WriteLine("[");
     if (dt.Rows.Count > 0)
     {
         builder.WriteLine("{\"optionDisplay\":\"Select SubCategory\",");
         builder.WriteLine("\"optionValue\":\"0\"},");
         for (int i = 0; i <= dt.Rows.Count - 1; i++)
         {
             builder.WriteLine("{\"optionDisplay\":\"" + dt.Rows[i]["SubCategory_Value"] + "\",");
             builder.WriteLine("\"optionValue\":\"" + dt.Rows[i]["SubCategory_ID"] + "\"},");
         }
     }
     else
     {
         builder.WriteLine("{\"optionDisplay\":\"Select SubCategory\",");
         builder.WriteLine("\"optionValue\":\"0\"},");
     }
     string returnjson = builder.ToString().Substring(0, builder.ToString().Length - 3);
     returnjson = returnjson + "]";
     return returnjson.Replace("\r", "").Replace("\n", "");
 }


мой каскадный выпадающий список работает абсолютно нормально
пример: когда я выбираю классификацию 1, она заполняет классификацию 2, а когда я выбираю классификацию 2, она заполняет список подкатегорий.


Проблема:

У меня есть классификация список вариантов переключателей
когда я выбираю предложение, оно должно автоматически заполнять список классификаций 1,2 и подкатегорий.

Что я уже пробовал:

Когда я выбираю suggestion radiobutton list, он должен автоматически заполнять все три выпадающих списка соответствующими значениями.


$('#<%=rdlist.ClientID % & gt; input'). change(функция () {
// Тот, кто запускает событие, всегда является
// проверил один; вам не нужно проверять это

var Data = $(this). val();
$.каждый(данные.сплит(/\|/), функция (я, Валь) {
если (i = = 0) {
// ниже строка работает нормально, так как классификация 1 заполняется при загрузке страницы моего кода
$('#<%=ddlclassification1.ClientID %>'). val ($. trim(val));
//Он запускает триггер и вызывает мое событие изменения classification1 и заполняет значения в раскрывающемся списке / / classification 2
$('#<%=ddlclassification1.ClientID %>'). trigger ('change');
}
если (i == 1) {
// Ниже строка не работает
$('#&ЛТ;%=ddlclassification2.Идентификатора ClientID %&ГТ;').функция val($.отделка(Валь));

}
если (i == 2) {
}
})

});


Я буду признателен, если кто-нибудь потратит немного времени и решит эту проблему.
Я очень расстроен.


Спасибо и с уважением,
Сунил Мали

1 Ответов

Рейтинг:
1

Vincent Maverick Durano

Во-первых, поскольку вы выполняете каскадную реализацию на стороне клиента, вам нет необходимости устанавливать AutoPostback в true для вашего выпадающего списка.

Цитата:
// Ниже строка не работает
$('#&ЛТ;%=ddlclassification2.Идентификатора ClientID %&ГТ;').функция val($.отделка(Валь));


В чем же ценность $.trim(val)? Вам нужно убедиться, что заданное вами значение действительно существует в вашем выпадающем списке, чтобы оно работало.