如何使我的代码成为三态复选框树视图?

时间:2015-12-03 02:29:05

标签: javascript c# treeview tri-state-logic

我需要做一个三态树视图复选框,但到目前为止,我只能将其设置为两个状态:

  1. 如果检查了所有子项,则选中父级。

  2. 如果检查了部分孩子,则父母没有检查。

  3. 但是我想在部分孩子检查时做出来,父母显示方形检查。 这是我的代码的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);
                }
            }
        });
    })
    

    如何修改它以使其在树视图中处于三态,因为使用此代码,它只显示两个状态。

    我可以采用更好的方式进行三态模式吗?

    顺便说一下这是我的treeview的asp.net代码:

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

    希望有人可以帮助我。真的很感激。

    提前致谢。

0 个答案:

没有答案