VS2010中如何点击treeview的节点而不刷新treeview?

单线程加锁 2011-11-08 04:46:25
尽量不使用iframe
代码如下

<asp:ScriptManager ID="sm1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Button ID="BtnData" runat="server" Text="数据查看" Width="98%" Height="10%"
CausesValidation="False"
onclientclick="hidediv('BtnData'); return false" />
<div id="divData" style="width:98%;height:89.5%">
<asp:TreeView ID="tvData" runat="server" ImageSet="WindowsHelp"
onselectednodechanged="tvData_SelectedNodeChanged" >
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<Nodes>
<asp:TreeNode Text="资料查询" Value="A01" Checked="false">
<asp:TreeNode Text="资料查询" Value="A0101"></asp:TreeNode>
<asp:TreeNode Text="记录查询" Value="A0102"></asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="9pt" ForeColor="Black"
HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="1px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
</div>
</ContentTemplate>
...全文
795 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
qthl004 2012-08-06
  • 打赏
  • 举报
回复
楼主说的是不是这个软件啊

关键字:

ASP TreeView非常快速并且非常小(only 44 KB) 的.Net Treeview控件. 易于使用并且样式丰富,并且你还可以自己设置节点的HTML标签Basic版本(小于20个节点)免费!
此产品包含在产品集合 obout components Suite 中。

More Features:


From/To XML file
Populate from XML file with one line of code
Loading Web style
WhiteR style
XpBlue style
Gray style
TsMenu style
Open in Search pane
Find Selected Node
From Dennis
Checkboxes
How To add checkboxes
Select multiple nodes
Show File System
File System Loading
Edit nodes
Keyboard Navigation
Icons for treeview
Customize
How-To and Help

ASP TreeView Vista Theme


单线程加锁 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 sandy945 的回复:]

...

用document.getElementById 查找dom元素
[/Quote]
好的,谢谢啦,js 不熟悉,我先看一看呀
阿非 2011-11-10
  • 打赏
  • 举报
回复
...

用document.getElementById 查找dom元素

单线程加锁 2011-11-10
  • 打赏
  • 举报
回复
这个应该有办法可以解决的吧,如果真还不行的话我就用只能iframe了
单线程加锁 2011-11-10
  • 打赏
  • 举报
回复
我采取了用cookie记录状态母版当前treeview的办法,记录与读取都成功了。但问题是,我每次执行js比方说
this.divData.style.display = "none";时他会执行的子页上的divdata(),然后就会报错:当前页没有divData这个div.
要怎么样可以让js里的这个hidetree()(这些方法我都是写在母版页中的,但刷新页的时候子会在子页上执行。。)在母版页中执行呢?




public partial class Main : System.Web.UI.MasterPage
{
HttpCookie Cook = new HttpCookie("treeState","");
protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "js", "hidetree()", true);
}
}

--写在母版页的html中的

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" %>
function hidetree()
{
switch (getCookie("treeState"))
{
case "BtnData":
divData.style.display = "";
this.divTree.style.display = "none";
this.divLogin.style.display = "none";
break;
case "BtnTree":
this.divData.style.display = "none";
this.divTree.style.display = "";
this.divLogin.style.display = "none";
break;
case "BtnLogin":
this.divData.style.display = "none";
this.divTree.style.display = "none";
this.divLogin.style.display = "";
break;
}
}
function hidediv(btnid)
{
switch (btnid)
{
case "BtnData":
divData.style.display="";
divTree.style.display="none";
divLogin.style.display = "none";
writeCookie('treeState', 'BtnData', '2');
break;
case "BtnTree":
divData.style.display="none";
divTree.style.display="";
divLogin.style.display = "none";
writeCookie('treeState', 'BtnTree', '2');
break;
case "BtnLogin":
divData.style.display="none";
divTree.style.display="none";
divLogin.style.display = "";
writeCookie('treeState', 'BtnLogin', '2');
break;
}
}

<asp:Button ID="BtnTree" runat="server" Text="考勤报表查看" Width="98%" Height="10%"
CausesValidation="False" onclientclick="hidediv('BtnTree'); return false" />

单线程加锁 2011-11-10
  • 打赏
  • 举报
回复
搞定了。。
把这段代码加到js里就OK了,不从前端去执行选择用js的load去触发就OK。


function pageLoad()
{
hidetree();

}
阿非 2011-11-09
  • 打赏
  • 举报
回复
简单的做法就是使用框架页 frameset or iframe

否则 延续你现在的方案的话,你需要记住相应treeview的状态

这是非常不合适的。
单线程加锁 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sandy945 的回复:]

指定TreeNode的SelectAction属性

TreeNode SelectAction="Expand"
[/Quote]
谢谢关注。不好意思,可能我描述的不清晰,重新详细说一下。
其实我的treeview已经是不刷新的了,只是整个页面刷新了。因为我第一次加载的时候 是将第1个treeview展开,第二第三个treeview的div隐藏(折叠的导航菜单,每点一次div上面相应的button则展开当前button下面的treeview)效果相当于csdn的社区首页的菜单但我的是把他的节点做成了多个treevie中间加button 隔开。问题是我在点开第二个treeview的某个节点打开一个页面的时候,母版页会刷新过来(重新显示第1个treeview展开,第二第三个treeview的div隐藏,我要的效果是第2个treeview显示,第一和第三个treeview隐藏)
阿非 2011-11-09
  • 打赏
  • 举报
回复
指定TreeNode的SelectAction属性

TreeNode SelectAction="Expand"
单线程加锁 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 pridescc 的回复:]

用javascript控制tree 就不会刷新了
[/Quote]
能不能详细点?
开发者孙小聪 2011-11-09
  • 打赏
  • 举报
回复
用javascript控制tree 就不会刷新了
阿非 2011-11-09
  • 打赏
  • 举报
回复
还是使用框架页吧
单线程加锁 2011-11-09
  • 打赏
  • 举报
回复
我想到的一个方法是,给每个treeview加一个单击事件,用cookie记住哪个treeview被点击,master load 时再根据cookie内容显示相应的treeview
单线程加锁 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chaichangaini 的回复:]
好吧那你就用Updatepanel把
或者AJAX动态取回数据自己动态生成一个把!!!
[/Quote]
我是使用了Updatepanel的,不刷新页面的话,treeview是不会刷新的.但是如果右边的页面刷新了,左边的treeview与button组成的那个折叠菜单会重新加载.我现在要的就是右边刷新了,左边不自动刷新.
1800包吃包住 2011-11-08
  • 打赏
  • 举报
回复
好吧那你就用Updatepanel把
或者AJAX动态取回数据自己动态生成一个把!!!
单线程加锁 2011-11-08
  • 打赏
  • 举报
回复
感谢,我已经去了,但是还是不行。。。
阿非 2011-11-08
  • 打赏
  • 举报
回复
你把 onselectednodechanged 去掉.
单线程加锁 2011-11-08
  • 打赏
  • 举报
回复
这样么?但是我没有用框架的,'右边框架名称'用main.Master和MainContent好象都不对
<asp:TreeNode Text="<font onclick='window.open('Default2.aspx','MainContent')'>考勤日报</font>" Value="0201" SelectAction="Expand" ></asp:TreeNode>
md5e 2011-11-08
  • 打赏
  • 举报
回复
node.Text="<font onclick='window.open('链接地址+参数','右边框架名称')'>链接到右边</font>"
node.SelectAction = TreeNodeSelectAction.None;


这个是实现JS链接到框架的,你也可以把window.open改成你要的JS方法
单线程加锁 2011-11-08
  • 打赏
  • 举报
回复
我还是贴全部的代码吧。因为之间我用了很多方法去尝试不让他刷新,可能有些乱。
我要实现的就是一个简单的导航菜单,一个按钮加一个treeview为一部分,点一下button 则显示当前的treeview,(现在这个已经实现了)现在问题时每次点击有url的节点,母版页都会刷新,回到第一次load的样子。

效果参照这个:
http://topic.csdn.net/u/20111020/10/05540bd4-6681-46ff-bf33-9c5b5438a5e8.html




<body style=" height:94%; background-color:#F5FFFA;padding: 10px 10px 10px 10px;margin:-11px -10px -5px -11px ">
<form id="frmMain" runat="server" style="padding:1px 1px 1px 1px">

<input id="btnClick" style="DISPLAY:block;" type="button" value="Button" name="btnClick" runat="server" onclick="__doPostBack(eventTarget, eventArgument)" />
<div class="hideSkiplink"
style="position: relative;
background-color:#3a4f63;width:100%; float: left; text-align: left; font-style:normal;
display: block; padding:0px 0px 0px 0px;margin:0px 0px 0px 0px; top: 0px; left: 0px;">
<div class="Header" style="font-size: 14px;color: White;padding:5px">FMIC考勤系统</div>
</div>
<div id="divMenu"
style="position: relative;width:17%;height:95%;float:left;background-color:#FFFFFF; bottom: 0px;">
<asp:ScriptManager ID="sm1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Button ID="BtnData" runat="server" Text="考勤数据查看" Width="98%" Height="10%"
CausesValidation="False"
onclientclick="hidediv('BtnData'); return false" />
<div id="divData" style="width:98%;height:89.5%">
<asp:TreeView ID="tvData" runat="server" ImageSet="WindowsHelp"
onselectednodechanged="tvData_SelectedNodeChanged" >
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<Nodes>
<asp:TreeNode Text="基本资料查询" Value="A01" Checked="false">
<asp:TreeNode Text="考勤资料查询" Value="A0101"></asp:TreeNode>
<asp:TreeNode Text="基本打卡记录查询" Value="A0102"></asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="9pt" ForeColor="Black"
HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="1px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Button ID="BtnTree" runat="server" Text="考勤报表查看" Width="98%" Height="10%"
CausesValidation="False" onclientclick="hidediv('BtnTree'); return false" />
<div id="divTree" style="width:98%;height:89.5%; display:none" >

<asp:TreeView ID="tvTree" runat="server" ImageSet="WindowsHelp"
onselectednodechanged="tvTree_SelectedNodeChanged" >
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<Nodes>
<asp:TreeNode Text="日常报表查询" Value="02" Checked="true">
<asp:TreeNode Text="考勤日报" Value="0201" NavigateUrl="Default2.aspx" SelectAction="Expand"></asp:TreeNode>
<asp:TreeNode Text="考勤异常日报" Value="0202" NavigateUrl="Default3.aspx"></asp:TreeNode>
<asp:TreeNode Text="员工请假报表" Value="0203"></asp:TreeNode>
<asp:TreeNode Text="员工加班日报" Value="0204"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="汇总报表查询" Value="03" Checked="false">
<asp:TreeNode Text="考勤月报" Value="0301"></asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="9pt" ForeColor="Black"
HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="1px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
</div>
</ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Button ID="BtnLogin" runat="server" Text="系统" Width="98%" Height="10%"
CausesValidation="False" onclientclick="hidediv('BtnLogin'); return false" />
<div id="divLogin" style="width:98%;height:89.5%; display:none">
<asp:TreeView ID="tvLogin" runat="server" ImageSet="WindowsHelp"
onselectednodechanged="tvLogin_SelectedNodeChanged" >
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<Nodes>
<asp:TreeNode Text="退出系统" Value="0301"></asp:TreeNode>
<asp:TreeNode Text="重新登陆" Value="0302"></asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="9pt" ForeColor="Black"
HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="1px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<div style="clear:both;background-color: #FF00FF"></div>
</div>

<div id="divContent" style="width:82%;height:98%;float:right;background-color:#FFFFFF">
<asp:UpdatePanel ID="UpdatePanel3" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" >
<ContentTemplate>
<asp:ContentPlaceHolder id="MainContent" runat="server">

</asp:ContentPlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div class="clear">
</div>
</form>

</body>
</html>




function hidediv(btnid)
{
switch (btnid)
{
case "BtnData":
divData.style.display="";
divTree.style.display="none";
divLogin.style.display="none";
break;
case "BtnTree":
divData.style.display="none";
divTree.style.display="";
divLogin.style.display="none";
break;
case "BtnLogin":
divData.style.display="none";
divTree.style.display="none";
divLogin.style.display="";
break;
}
}





加载更多回复(7)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧