Как заполнить asp.net Элемент управления CheckBoxList с помощью jQuery

#jquery #asp.net #json #data-binding #checkboxlist

#jquery #asp.net #json #привязка к данным #список чекбоксов

Вопрос:

У меня есть два списка флажков на странице — родительский и дочерний. Оба находятся в отдельных сворачиваемых подразделениях. Когда родительский div сворачивается, я использую jquery для вызова веб-метода, который выполняет запрос к базе данных, сериализует возвращенный список в json и возвращает его методу jquery.

Все вышесказанное работает очень хорошо, и я могу успешно получить ожидаемую строку json.

Что я хотел бы сделать сейчас, так это заполнить дочерний checkboxlist на основе этих данных json. Предпочтительно, я хотел бы также иметь возможность задавать текст и значение (свойства DataTextField и DateValueField списка чекбоксов).

Кто-нибудь может привести примеры того, как это сделать?

    function RunCentralEffect() {
        $("#ParentDiv").hide('blind', 200);
        var names = [];
        $('#ParentDiv input:checked').each(function () {
            names.push(this.value);
        });
        $.ajax({
            type: "POST",
            url: "BranchReportForm.aspx/MyWebMethod",
            data: "{'args': '"   names   "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert('Success!');
                //Now what?
            }
        });
    }
  

Спасибо!

Ответ №1:

Когда вы говорите об элементах управления CheckBoxList, вы имеете в виду свойства DataValueField и DataTextField ASP.NET абстракции, о которых ваши методы jQuery не будут знать, поскольку они обрабатываются в вашем codebehind, который генерирует HTML, отправляемый в браузер.
Что вам нужно будет сделать, так это напрямую манипулировать элементами DOM. Не зная немного больше о фактическом html-макете, который генерируется вашим кодом, сложно предоставить более подробный ответ, но на высоком уровне вам нужно будет перебирать возвращенные вами объекты json и добавлять новый флажок и метку в соответствующий div.

Ответ №2:

Ваш код javascript не будет иметь ни малейшего представления о том, что такое DataValueField или DataTextField.

Помните, .Net отображает элемент управления в виде HTML, поэтому, вероятно, он будет выглядеть примерно так:

 <input type="checkbox" name="vehicle" value="Infiniti" /> Infiniti
<input type="checkbox" name="vehicle" value="Pontiac" /> Pontiac 
  

Чтобы установить, отмечены они или нет:

 $('input[name=vehicle]').attr('checked', true);
$('input[name=vehicle]').attr('checked', false);
  

Я думаю, вы можете использовать .val() для установки значений;

 $('input[name=vehicle]').val('BMW');