0

グループ化されたグリッドがあります。つまり、グリッドにはグループの製品が表示されます。したがって、構造には Group とその子があります。同じように、他のグループとその子を以下のようにバインドします。親のクリックでサブリスト全体をチェックおよびチェック解除したいです。

CSHTML
@{
    if (Model.List.Count() > 0)
    {
    <table>
        <tr>
              <input type="checkbox" class="cls@(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="cls@(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>
4

1 に答える 1

1

あなたが渡してundefinedいるので、あなたはあなたの関数を呼び出していますthis.class:

onclick="checkUncheckAll(this.class)"

要素にはプロパティがありませんclass(プロパティはありますclassName)。プロパティがある場合は、そのclassを渡したくありませんsender.checked

.classを通話から削除するだけです。

group 内ですべてを実行しようとしているclassName場合は、他のチェックボックスをオン/オフにするときに関数で使用する必要があります。

function checkUncheckAll(sender) {
    var chkElements = document.getElementsByClassName(sender.className);
    // Note ------------------------------------------------^^^^^^^^^^
    for (var i = 0; i < chkElements.length; i++) {
        if (chkElements[i] !== sender) {             // Not strictly necessary I guess, but...
            chkElements[i].checked = sender.checked;
        }
    }
}

これは、「すべて」のチェックボックスに単一のクラスしかないことを前提としています。

于 2016-06-12T13:50:50.823 に答える