グリッドがグループ化されています。グリッドはグループの積を示しています。したがって、構造にはグループとその子があります。同じように、私はいくつかの他のグループと私が下にあるようにバインドしている子を持っています。私は親のクリックでサブリスト全体をチェックし、チェックを外したいと思います。動的idsとjqueryを使用したクラスのチェックボックスをオンまたはオフにします。
CSHTML
@{
if (Model.List.Count() > 0)
{
<table>
<tr>
<input type="checkbox" class="[email protected](obj.GroupId)" name="@obj.GroupId" onclick="checkUncheckAll(this.class)" />
<td>Name</td>
</tr>
@foreach (var obj in Model.subList)
{
<tr>
<td>
<input type="checkbox" class="[email protected](obj.GroupId)" name="@obj.GroupId" /></td>
</td>
<td>
@obj.Name
</td>
</tr>
</table>
}
}
<input type="button" value="Save" onclick="PickAllCheckedRows();" />
私はこれを以下のようにしようとしていますが、成功しません。また、保存ボタンをクリックすると、チェックされたグループとそのサブアイテムをすべて選択します。どんな助けでも本当に感謝しています。
<script type="text/javascript">
function checkUncheckAll(sender) {
alert(sender);
var chkElements = document.getElementsByClassName('chkItems');
for (var i = 0; i < chkElements.length; i++) {
chkElements[i].checked = sender.checked;
}
}
function PickAllCheckedRows() {
}
</script>
これは機能しています。私が親チェックボックスをクリックすると、その子はチェックされ、親のチェックを外すと、子はチェックされなくなりますが、各サブアイテムを1つずつチェックすると、親チェックボックスはチェックされません。 – Sweetie
@Sweetie:あなたはそれを別々に実装しなければなりません。個々の項目チェックボックスのクリックを処理し、それらがすべて選択されているかどうかに基づいて「すべて」チェックボックスを設定する必要があります。 –