你们如何有条件地禁用 asp TreeView 中的复选框?
例如,如果应用程序用户没有特定权限,请在权限 TreeView 中禁用该权限条目复选框。
这就是我要找的东西,这是 winform 应用程序中的等价物(文本变灰时复选框被禁用):
我看到其他解决方案拦截并忽略了复选框上的点击事件。我更喜欢将复选框简单地设置为禁用的解决方案。
我正在寻找 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 中,扫描所有具有该类名的 TreeView 节点并禁用与其关联的复选框:
// 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];
}
关于c# - 禁用 ASP.net TreeView 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078476/