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"]]

});

テーブルを作成するためのaspmvcrazorコード:

<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

チェックボックスがオンになっているということは、その値が投稿として送信されることを意味し、他に何も変更する必要はありません。もちろん、同じ名前のチェックボックスが複数ある場合、チェックボックスの1つがチェックされていると、その値が送信されます。

于 2012-09-18T22:28:05.840 に答える
0

そこで、問題を修正しました。私が抱えていた主な問題は、データにアクセスしているときに文字列をjavascript要素に変換していて、checked = "checked"プロパティがなかったため、falseに設定されていました。

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

したがって、fnGetDataを使用してデータテーブルをループする代わりに、javascriptテーブルの行要素を使用して次のように検索する必要がありました。

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

datatablesのコンテンツ(文字列)から新しいjquery要素を作成していたため、チェックされたプロパティがそこに設定されていなかったと思います

datatables.netの非表示の列がある場合は、のようにそれらにアクセスできないことに注意してください。

于 2012-09-19T01:12:34.600 に答える