#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');