Как сделать так, чтобы мой код отображал три состояния в виде дерева?

Мне нужно сделать флажок в виде дерева с тремя состояниями, но пока я могу сделать это только в два состояния:

  1. если все дети проверены, родитель проверен.

  2. если частичный ребенок проверен, родитель не проверен.

Но я хотел сделать это, если частичный ребенок проверен, родитель покажет квадратную проверку. Вот мой JavaScript для моего кода:

<script type="text/javascript">
$(function () {
    $("[id*=tvPermission] input[type=checkbox]").bind("click", function () {
        var table = $(this).closest("table");
        if (table.next().length > 0 && table.next()[0].tagName == "DIV") {
            //Is Parent CheckBox
            var childDiv = table.next();
            var isChecked = $(this).is(":checked");

            $("input[type=checkbox]", childDiv).each(function () {
                if (isChecked) {
                    $(this).prop("checked", true);
                } else {
                    $(this).prop("checked", false);
                }
            });
        } else {
            //Is Child CheckBox
            var parentDIV = $(this).closest("DIV");

            if ($("input[type=checkbox]", parentDIV).length == $("input[type=checkbox]:checked", parentDIV).length) {
                $("input[type=checkbox]", parentDIV.prev()).prop("checked", true);
            } else {
                $("input[type=checkbox]", parentDIV.prev()).prop("checked", false);
            }
        }
    });
})

Как я могу изменить его, чтобы сделать его три состояния в древовидной структуре, потому что с этим кодом, он показывает только два состояния.

Есть ли лучший способ, которым я могу сделать режим с тремя состояниями?

Кстати, это мой код asp.net для моего дерева:

<asp:TreeView ID="tvPermission" runat="server" ShowCheckBoxes="All" NodeWrap="true" NodeIndent="2">

Надеюсь, кто-нибудь может мне помочь. Действительно ценю это.

Заранее спасибо.

0 ответов

Другие вопросы по тегам