您的位置:程序门 -> .net技术 -> c#



怎样实现treeview一个结点展开,其他结点合拢??


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


怎样实现treeview一个结点展开,其他结点合拢??
发表于:2007-01-16 10:08:30 楼主
using   system;
using   system.data;
using   system.data.sqlclient;
using   microsoft.web.ui.webcontrols;
using   sqlhelper;

namespace   webaspnet1.components
{
///   <summary>
///   tree   的摘要说明。
///   </summary>
public   class   tree
{
public   static   string   applicationpath   =   "localhost ";

public   void     bindtree(treeview   treeview)
{
tree   tree   =   new   tree();
datatable   datatable   =   tree.gettrees(missystem.projectname.tolower());

treeview.nodes.clear();                                                                       //   清空树

treenode   rootnode   =   new   treenode();
rootnode.text   =   "商品分类 ";                                                               //   给节点绑定显示值

///作者注:此值请勿随便修改!!!
rootnode.nodedata   =   missystem.projecttreerootnodedate;         //   给节点绑定key值

rootnode.expanded   =   false;                                                                 // 默认根结点为展开
rootnode.navigateurl   =   "maindesktop.aspx ";//此处应做修改
rootnode.target   =   "mainframe ";
rootnode.imageurl   =   "images/05.gif ";
treeview.nodes.add(rootnode);

createchildnode(rootnode,datatable);                                             // 加入所有根结点以下的结点 
}

public   void   createchildnode(treenode   parentnode,datatable   datatable)
{
datarow[]   rowlist   =   datatable.select( "parentid= ' "   +   parentnode.nodedata   +   " ' ");
foreach(datarow   row   in   rowlist)
{
treenode   tempnode   =   new   treenode();
tempnode.text   =   row[ "title "].tostring();
tempnode.nodedata   =   row[ "treeid "].tostring();
          tempnode.expanded   =   false;

object   obj   =   tempnode.nodes;
string   ind   =   (string)obj;
int   i   =   ind.indexof( ". ");
if(i!=-1)
{
ind=ind.substring(0,i);
foreach(treenode   tempnode   in   tempnode.nodes)
{
if(tempnode.getnodeindex()!=ind)
tempnode.expanded=false;
}
}
//tempnode.navigateurl   =   row[ "url "].tostring();
tempnode.navigateurl   =   formatadminurl(row[ "url "].tostring());
tempnode.target   =   "mainframe ";
parentnode.nodes.add(tempnode);
createchildnode(tempnode,datatable);
}
}


public   datatable   gettrees(string   sproname)
{
///定义类sqlhelper
sqlhelper.sqlhelper   sqlhelper   =   new   sqlhelper.sqlhelper();

///定义保存从数据库获取的结果的datareader
sqldatareader   dr   =   null;

///创建访问数据库的参数
sqlparameter[]   paramlist   =   {
      sqlhelper.createinparam( "@proname ",sqldbtype.varchar,200,sproname)
      };

try
{
///执行存储过程
sqlhelper.runproc( "pr_gettrees ",paramlist,out   dr);
}
catch(exception   ex)
{
///抛出执行数据库异常
systemerror.systemlog(ex.message);
throw   new   exception(ex.message,ex);
}

///获取datatable对象
datatable   dt   =   systemtools.convertdatareadertodatatable(dr);

///返回从数据库获取的结果
return(dt);
}

private   string   formatadminurl(string   adminurl)
{
if(adminurl.indexof( "admins ")   >   -1)
{
return( "http:// "   +   applicationpath   +   "/ "   +   missystem.projectname
+   "/ "   +   adminurl);
}
else
{
return(adminurl);
}
}
}
}
发表于:2007-01-16 10:15:431楼 得分:0
先用collapseall折叠所有节点,然后用某一个节点的expand方法来展开节点,如treeview1.nodes[1].expand();


快速检索

最新资讯
热门点击