使用 Jquery 检查 asp.net checkboxlist

Posted

技术标签:

【中文标题】使用 Jquery 检查 asp.net checkboxlist【英文标题】:Check asp.net checkboxlist using Jquery 【发布时间】:2018-08-01 03:21:48 【问题描述】:

我正在使用 [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);
                        )
                    
                );  

不幸的是,这不起作用,还有其他解决方案吗?

【问题讨论】:

哪部分不起作用? 没有选中/选中复选框项(数据库中有数据) 你调试了吗?你在res 得到什么? $("#CheckBoxListActivityUpdate") 是否返回一个元素? 我修改并删除了 res 和任何其他参数。我的网络服务返回:["Attributes":"Keys":[],"Count":0,"CssStyle":"Keys":[],"Count":0,"Value":null, "已启用":true,"已选择":false,"Text":"Football","Value":"Football"] 我有完全相同的问题(我只是使用 asp c#):***.com/questions/15044340/… 【参考方案1】:

$.each(function () 没有输入是没有意义的。那有什么意义呢?它不会做任何事情,因为它没有任何东西可以循环,所以它里面的代码永远不会执行。您可以将其删除。

如果复选框是&lt;asp:Checkbox 服务器控件,您可能还需要使用$("#&lt;%=CheckBoxListActivityUpdate.ClientID%&gt;")

当然,如果您需要实际使用响应数据,并使用它来控制是否选中该框,那么您必须自己编写,或者澄清问题以准确说明应该做什么根据响应数据发生(指定数据中相关的属性并显示目标 html)。


顺便说一句,不要手动构建你的数据对象,而是创建一个合适的对象并让浏览器为你字符串化它,这样你就可以避免任何潜在的语法错误:

data: JSON.stringify( "Value": $("#<%=rowID.ClientID%>").value )

【讨论】:

是的,我正在使用 '' 。所以应该写选择而不是选中? success: function (data) $("#&lt;%=CheckBoxListActivityUpdate.ClientID%&gt;").prop('Selected', true); 当我将 row.ID 传递给 webmethod 时,它将返回一个字符串列表。例如足球和篮球。然后我想检查复选框列表中的可用项目,如果存在足球和篮球,然后检查/选择它们 所以这是一个复选框的列表,而不是一个复选框?您不能像那样将整个列表设置为“true”,而且听起来您不想这样做。在这种情况下,您需要向我们展示 HTML。而且您的服务器不返回字符串,而是返回一些 JSON。我们应该查看 JSON 中的哪个属性以与复选框匹配?另外,如果返回的数据中没有checkbox的值,是不是应该取消勾选呢?您的要求有点不完整。 是的,你是对的,它是一个复选框列表,它的项目是从 sql-server 填充的。我的 webmethod 现在返回这个:["Football"] 并且是的,如果该值不在返回的数据中,则应该取消选中

以上是关于使用 Jquery 检查 asp.net checkboxlist的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript/jquery 检测 Asp.Net 表单是不是有效

Jquery Datatable在asp.net核心中使用异步任务方法获取数据

ASP.Net MVC Recaptcha Jquery Ajax 问题

asp.net mvc jquery 下拉验证

ASP.NET MVC 5 - jQuery AJAX 有效,Fetch API 无效

如何在 JQuery 内部检查哪个控件触发了它