贴你一个,使用时webconfig设置要该为
<globalization 
            requestEncoding="gb2312" 
            responseEncoding="gb2312" 
/>tree.js文件内容
太长了,我贴在我的blog上:
http://blog.csdn.net/happyjun2000/archive/2004/10/14/136305.aspx使用方法:
namespace DataPlatform.Web
{
/// <summary>
/// mainwindow 的摘要说明。
/// </summary>
public class mainwindow : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!IsPostBack)
{
if (Session["userId"]==null)
{
Response.Redirect ("login.aspx");
// return;
}
ViewState["treeItems"]=getTreeItem();
}
} private string getTreeItem()
{
StringBuilder sb=new StringBuilder();
string CRLF="\r\n";
sb.Append(" treeVariable = treeVariable.addItem(new obj_node('root','环境综合数据平台','','root','entrance/desktopFrame.aspx','',0,''));" + CRLF);  //环境监测
#region 1:环境监测

sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor','环境监测','root','folder','','',1,''));" + CRLF); 

sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_1','送样登记','monitor','page','envMonitor/registAnalysisFrame.aspx?goto=regist','forum.gif',1,''));" + CRLF);
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_2','样品接收','monitor','page','envMonitor/registAnalysisFrame.aspx?goto=receive','forum.gif',2,''));" + CRLF);
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_3','分析数据','monitor','page','envMonitor/registAnalysisFrame.aspx?goto=data','forum.gif',3,''));" + CRLF);
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_4','分析报告','monitor','page','envMonitor/registAnalysisFrame.aspx?goto=report','search.gif',4,''));" + CRLF);
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_2','监测数据','monitor','page','envMonitor/monitorDataFrame.aspx','forum.gif',2,''));" + CRLF);
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_5','自动监控','monitor','page','envMonitor/otherdata.aspx','forum.gif',5,''));" + CRLF); 
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_6','数据查询','monitor','page','envMonitor/dataquery.aspx','search.gif',6,''));" + CRLF); 
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_7','报表统计','monitor','page','envMonitor/RptFrame.aspx','search.gif',7,''));" + CRLF); 
sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_8','报表配置','monitor','page','envMonitor/rptConfig.aspx','forum.gif',8,''));" + CRLF); 
// //if(Session["qxid"].ToString().Substring(9,1)=="1" || Session["qxid"].ToString().Substring(8,1)=="1") 
// //{
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_1','环境质量','monitor','folder','','',1,''));" + CRLF); 
//
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_1_1','污染源管理','monitor_1','page','envMonitor/pollutionSource.aspx','sys.gif',1,''));" + CRLF); 
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_1_2','文档资料','monitor_1','page','envMonitor/infoTest.aspx','ou.gif',2,''));" + CRLF);
//
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_2','污染源','monitor','folder','','',2,''));" + CRLF); 
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_2_1','污染源管理','monitor_2','page','instock/jhhandler.aspx','ou.gif',1,''));" + CRLF);
// sb.Append("treeVariable = treeVariable.addItem(new obj_node('monitor_2_2','数据单位','monitor_2','page','instock/jhhandler.aspx','ou.gif',2,''));" + CRLF);
    
#endregion

解决方案 »

  1.   

    前台使用脚本:
    <%@ Page language="c#" Codebehind="mainwindow.aspx.cs" AutoEventWireup="false" Inherits="DataPlatform.Web.mainwindow" %>
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <SCRIPT language="JavaScript" src="javascript/tree.js"></SCRIPT>
    <OBJECT id="closes" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"
    VIEWASTEXT>
    <PARAM NAME="Width" VALUE="106">
    <PARAM NAME="Height" VALUE="53">
    <PARAM NAME="Command" VALUE="Close">
    </OBJECT>
    <SCRIPT language="JavaScript">
    function defineMenuItems(treeVariable) { <%=ViewState["treeItems"]%>
    } </SCRIPT>
    </HEAD>
    <frameset rows="26,*,0" border="0" frameSpacing="0" frameBorder="0" onload="startMenu()">
    <frame name="topmenu" scrolling="no" noresize target="contents" src="topbar.aspx" frameBorder="0">
    <frameset cols="160,1,*" onload="startMenu()" id="frame2">
    <FRAME name="MenuFrame" marginWidth="0" marginHeight="0" src="loading.htm" noResize scrolling="auto"
    target="PageFrame">
    <frame name="pageMiddle"  noresize>
    <frame name="PageFrame" src=desktopFrame.aspx frameBorder="0" scrolling="auto" noresize>
    </frameset>
    <frame name="Refresh" noresize scrolling="no" src="refresh.aspx">
    <noframes>
    <body>
    <p>此网页使用了框架,但您的浏览器不支持框架。</p>
    </body>
    </noframes>
    </frameset>
    </HTML>
      

  2.   

    你可以使用一个页面GetXml.aspx来生成xml数据,该页面根据接收的参数不同来生成不同的xml,然后使用节点的treeNodeSrc属性指向GetXml.aspx页面就可以了,当然,你需要通过querystring的方式来传递不同的参数.举例说来:test.htm
    ----------------------------------------------------
    <HTML xmlns:mydbtree>
    <HEAD>
    <?IMPORT NAMESPACE="mydbtree" IMPLEMENTATION="treeview.htc"/>
    <script language=javascript>
    function InitTree()
    {
    usertree.treeNodeSrc = "GetXml.aspx?type=root";
    usertree.databind();
    }
    </script>
    </HEAD>
    <body onload="javascript:initTree();">
    <mydbtree:treeview id="usertree"></mydbtree:treeview>
    </body>----------------------------------
    GetXml.aspx.cs
    ----------------------------------
    在GetXml.aspx的Page_Load事件中:
    GenerateXml();
    GenerateXml()的代码如下:
    private void GenerateXml()
    {
    string strType = Request.QueryString["type"];
    StringBuilder sXML=new StringBuilder();
    sXML.Append("<?xml version=\"1.0\" encoding=\"gb2312\" ?>");
    sXML.Append("<TREENODES>");
    if (strType != null)
    {
    if (strType.ToLower() == "root")
    {
    sXML.Append("<TREENODE TEXT=\"根节点\" treeNodeSrc=\"GetXml.aspx?type=children\" expanded=\"false\">");
    sXML.Append("</TREENODE>");
    }
    else if (strType.ToLower() == "children")
    {
    sXML.Append("<TREENODE TEXT=\"子节点\" treeNodeSrc=\"GetXml.aspx?type=children\" expanded=\"false\">");
    sXML.Append("</TREENODE>");
    }
    }
    sXML.Append("</TREENODES>");
             Response.Clear()
             Response.Write(sXML.ToString());
             Response.End();
    }基本上就是这样,我这里只是做了一个简单的测试,是一个可以无限展开的树,你可以改进一下来符合你的需求,需要注意的是,你需要把treeview.htc拷贝到你的目录中来,如果需要图片,就需要重新指定imageUrl属性,注意节点的expanded必须为false,否则你没有点击+号,也会自动展开.
      

  3.   

    @happyjun2000(蓝色游侠∮NET):
    楼主说的是微软的treeview.
      

  4.   

    to @happyjun2000(蓝色游侠∮NET):
    多谢你的回答,不过现在我们不想重新写一个树了,:)to cancersyf(fengzhimei) :谢谢,这正是我想要的,我先照着你的改改吧,
    遇到问题我会给你发现消息,希望你继续帮忙问题解决后我会再送100分先结贴了
      

  5.   

    动态加载是可以,呢指定一个TreeView.NodeSrc="http://xxxa.aspx?id="+点击的ID