0

所以我正在使用 JQuery datatables.net(www.datatables.net) 并取得了很大的成功。但最近我尝试添加一些复选框列,但没有取得多大成功。视觉上一切正常,但是当我实际选中/取消选中它时,它不会改变下面的底层值,无论是当我用 chrome 检查元素还是在 javascript 中捕获它时。我是否需要更新表格或其他东西来刷新 DOM 对象?

Javascript创建数据表:

$('#userGroupSettings').dataTable({
"bJQueryUI": true,
"aoColumns": [
/* ID */
    {
    "bVisible": false
},
/* Group Name */null,
/* Display Group */null,
/* Group Minimised*/null,
/* Send Fault Email*/null],
"aaSorting": [[1, "asc"]]

});

用于创建表的 asp mvc razor 代码:

<table id="userGroupSettings">
    <thead>
        <th>Group ID</th>
        <th>Group Name</th>
        <th>Display Group</th>
        <th title="When loading the webpage this will determine if the group is minimised or not">Group Minimised</th>
        <th title="Send me a fault email when an issue occurs in this group">Send Fault Email</th>
    </thead>
    <tbody>
    @foreach (MvcApplication2.Models.UserGroup group in user.Groups)
    {
        <tr>
            <td>@group.GroupID</td>
            <td>@group.GroupName</td>
            <td><input class="SettingsDisplayGroup" type="checkbox" name="displayGroup" value="@group.DisplayGroup" @(group.DisplayGroup ? "checked=\"checked\"" : "")/></td>
            <td><input class="SettingsMinimiseGroup" type="checkbox" name="minimiseGroup" value="@group.GroupMinimised" @(group.GroupMinimised ? "checked=\"checked\"" : "")/></td>
            <td><input class="SettingsSendFaultEmail" type="checkbox" name="sendFaultEmail" value="@group.SendFaultEmail" @(group.SendFaultEmail ? "checked=\"checked\"" : "")/></td>
        </tr>
    }
    </tbody>
</table>
<button id="saveUserGroupSettings">Save</button>

任何帮助表示赞赏

4

2 回答 2

1

选中的复选框仅意味着它的值将作为帖子发送,不需要更改任何其他内容。当然,如果您有多个具有相同名称的复选框,如果选中其中一个复选框,则将发送其值

于 2012-09-18T22:28:05.840 回答
0

所以我解决了这个问题。我遇到的主要问题是,当我访问数据时,我将字符串转换为 javascript 元素,并且因为它没有 checked="checked" 属性,所以它被设置为 false:

$($('#userGroupSettings').dataTable().fnGetData(i)[2])

因此,我不得不使用 javascript 表格行元素并以这种方式搜索它们,而不是使用 fnGetData 循环遍历数据表:

$('#userGroupSettings tbody tr').each(function () {
    var isChecked = $(this).find('.SettingsDisplayGroup')[0].checked;
}

我认为因为我正在从数据表内容(字符串)创建一个新的 jquery 元素,所以尚未在此处设置选中的属性

请注意,如果您有任何 datatables.net 隐藏列,那么您将无法像访问它们一样访问它们。

于 2012-09-19T01:12:34.600 回答