c# – 禁用ASP.net树视图复选框

你们如何有条件地禁用asp树视图中的复选框?

例如,如果应用程序用户没有特定权限,请在权限树视图中禁用该权限条目复选框.

这是我正在寻找的,这是winform应用程序中的等价物(禁用复选框,文本显示为灰色):

我看到了其他解决方案,其中复选框上的click事件被截获并被忽略.我更喜欢一个解决方案,其中复选框只是设置为禁用.

我正在寻找一个C#解决方案,但会对C#/ Javascript解决方案感到满意.

谢谢!

解决方法:

好的,找到了一个相当干净的解决方案:

在代码隐藏中:

TreeNode newNode = new TreeNode(permission.ToString());
newNode.SelectAction = TreeNodeSelectAction.None; // no Link

    if (shouldDisableCheckbox)
    {
        // Set a class so disabled nodes can be formatted thru CSS
        // and be identifiable as disabled in Javascript.
        newNode.Text = "<span class=disabledTreeviewNode>" + newNode.Text +"</span>";
    }

nodes.Add (newNode);

在Javascript中,扫描所有树视图节点以查找具有该className的节点,并禁用与其关联的复选框:

    // Called via a startup script created in Code Behind.
    // Disables all treeview checkboxes that have a text with a class=disabledTreeviewNode.
    // treeviewID is the ClientID of the treeView
    function DisableCheckBoxes(treeviewID)
    {
        TREEVIEW_ID = treeviewID;

        var treeView = document.getElementById(TREEVIEW_ID);

        if (treeView)
        {
            var childCheckBoxes = treeView.getElementsByTagName("input");
            for (var i = 0; i < childCheckBoxes.length; i++)
            {
                var textSpan = GetCheckBoxTextSpan(childCheckBoxes[i]);

                if (textSpan.firstChild)
                    if (textSpan.firstChild.className == "disabledTreeviewNode")
                        childCheckBoxes[i].disabled = true;
            }
        }
    }

function GetCheckBoxTextSpan(checkBox)
{
    // Set label text to node name
    var parentDiv = checkBox.parentNode;
    var nodeSpan = parentDiv.getElementsByTagName("span");

    return nodeSpan[0];
}
上一篇:Moocryption


下一篇:java中异常处理机制 throw抛出自定义业务逻辑异常 throws继续抛出 catch捕获后会自动继续抛向调用方法