2011-04-08 31 views
1

我在页面上有两个checkboxlists - Parent和Child。两者都在独立的可折叠divs。当Parent的div崩溃时,我使用jquery调用在数据库上执行查询的WebMethod,将返回的List序列化为json,并将其返回给jquery方法。如何通过jQuery填充asp.net CheckBoxList控件

以上所有的工作都很好,我能够成功地获得预期的json字符串。

我现在想要做的是根据该json数据填充Child复选框列表。最好,我希望能够设置文本和值(复选框列表的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

当您谈论ChecbkboxList控件,DataValueField和DataTextField属性时,您指的是ASP.NET抽象,您的jQuery方法将不会知道这些属性,因为这些属性在您的代码隐藏中处理,并生成发送到浏览器的HTML 。
你将不得不做的是直接操纵DOM元素。不了解更多关于由代码生成的实际html布局,提供更多答案是棘手的,但在高层次上,您需要遍历返回的json对象,并将新的复选框和标签附加到适当的DIV。

0

您的JavaScript代码将不知道什么是DataValueField或DataTextField。

记住,净呈现控制为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');