怎么样?
我尝试AutoPostback=false
,但点击该节点仍然会回发该页面。有什么想法吗?
答案 0 :(得分:5)
前进之路.....
每个节点的自动选择操作是SelectExpand,此枚举的“选择”部分被解释为“我选择了某些内容并需要回发”。只是“扩展”节点而不会导致回发:
TreeView1.Nodes(0).SelectAction = TreeNodeSelectAction.Expand
答案 1 :(得分:2)
EnableClientScript的默认设置为true,因此默认情况下,扩展和折叠节点应该在客户端进行。请注意该属性的注释(强调我的):
使用EnableClientScript属性指定TreeView控件是否在兼容的浏览器上呈现客户端脚本以处理展开和折叠事件。当此属性设置为true时,兼容的浏览器会执行代码以展开和折叠客户端上的节点。 必须事先知道树节点数据才能使客户端脚本正常工作。每次展开或折叠节点时,使用客户端脚本都会阻止回发到服务器。
要检查的事项:
如果您无法获得所有可用数据,则应确保正确设置PopulateOnDemand,PopulateNodesFromClient和TreeNodePopulate。
对评论的回应
是的,没有理由你不能做你正在尝试用树视图控件做的事情 - 事实上,它应该为你做大部分工作 - 除非你没有预先提供整棵树,在这种情况下,您需要提供将通过PopulateNodesFromClient和TreeNodePopulate填充节点的方法,假设浏览器被正确识别(这些以前的链接都包含有和没有回发的示例)。
jQuery树视图插件可能会更灵活(我没有使用它们,所以我不知道 - 我已经使用了我们正在讨论的TreeView控件,但是获得了“免费”功能,因为我只是有一棵小树,并提供所有数据,但需要更多的工作来设置:
3对你来说可能是也可能不是 - 在我们所做的每件事情中,我们尝试使用JavaScript来增强功能,而不是提供功能 - 因为jQuery库是所有客户端,如果浏览器不支持JavaScript ,你的jQuery TreeView控件不会出现,你可能会失去一个关键的导航元素,而像ASP.NET TreeView控件这样的服务器控件会注意到JavaScript不受支持并通过回退来解决这个问题。基于服务器(即回发后)版本的控件。
你还应该记住,jQuery不是微软的东西(尽管他们现在支持它),并且已经存在很长一段时间了,作为客户端产品,它独立工作服务器技术 - MS给我们在ASP.NET框架中提供了许多“服务器”控件,如果我们愿意,我们可以使用它们,这样做可以让我们的生活更轻松(通常在短期内)无论如何),但我们不必 - 最近发布的ASP.NET MVC框架是一个很好的例子,它是使用.NET堆栈在IIS上构建Web应用程序的另一种方式 - 但通常没有服务器控件。 / p>
答案 2 :(得分:0)
答案 3 :(得分:0)
在css文件中添加以下代码。然后选择TreeView属性调用NodeStyle->的CssClass =禁用
a.disabled {
pointer-events: none;
cursor: default;
}