我正在使用[webmethod]从sql-server检索字符串列表。代码是:
[WebMethod]
public void SelectActivityCheckboxItems(int SystemID)
{
//Configure a connection to SystemRegister database
var cs = ConfigurationManager.ConnectionStrings["SYSTEMREGISTERConnectionString"].ConnectionString;
List<string> SelectedActivity = new List<string>();
//Get the related data for update activty checkbox
using (var con = new SqlConnection(cs))
{
con.Open();
var cmd = new SqlCommand("setModalSystemUpdate", con) { CommandType = CommandType.StoredProcedure };
cmd.Parameters.AddWithValue("@SYSTEMID", SystemID);
var dr = cmd.ExecuteReader();
while (dr.Read())
{
SelectedActivity.Add(dr[0].ToString());
}
con.Close();
}
var js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(SelectedActivity));
}
这是复选框列表:
<div class="scroll">
<fieldset class="form-group">
<label class="col-sm-3">Aktivitet:</label>
<div>
<asp:CheckBoxList CssClass="paddingright" ID="CheckBoxListActivityUpdate" runat="server"
DataSourceID="SqlDataSource6"
DataValueField="ACTIVITYNAME"
RepeatColumns="2">
</asp:CheckBoxList>
</div>
</fieldset>
</div>
在我的aspx中,我有这个Jquery来“检查”列表中的项目并存在于复选框列表中。
$.ajax({
type: "POST",
url: "SystemService.asmx/SelectActivityCheckboxItems",
dataType: "json",
data: '{Value: "' + $("#<%=rowID.ClientID%>").value + '" }',
contentType: "application/json",
success: function (data) {
$.each(function () {
$("#CheckBoxListActivityUpdate").prop('checked', true);
})
}
});
不幸的是,这不起作用,还有其他解决方案吗?
答案 0 :(得分:0)
$.each(function () {
毫无意义。那是什么意思?它不会做任何事情,因为它没有任何东西可以循环,所以它里面的代码永远不会执行。你可以删除它。
如果复选框是$("#<%=CheckBoxListActivityUpdate.ClientID%>")
服务器控件,您可能还需要使用<asp:Checkbox
。
当然,如果您需要实际使用响应数据,并使用它来控制是否选中该框,那么您必须自己编写,或澄清问题以确切说明应该是什么基于响应数据发生(指定数据中相关的属性并显示目标HTML)。
顺便说一句,不要手工构建数据对象,而是创建一个合适的对象并让浏览器为你进行字符串化,然后你将避免任何潜在的语法错误:
data: JSON.stringify({ "Value": $("#<%=rowID.ClientID%>").value })