问题一
对treeview不熟悉,使用的是一次传一级的生成方法生成4级treeview树的笨办法,也就是页面一load就把所有树枝给装进去了。可是“树大招风”啊,客户端打开很慢(总树枝大概是7000)
我想让我点到第三级的时候才发生selectedchange事件读出4级树枝
但我选其他3级或2级树枝时自动将4级树枝的数据清掉装入新的数据
小弟刚接触treeview控件,一时也找不到相关资料,请CSDN各方神圣指点迷津....问题二
如何点文字不点+-号就可以将树打开关闭?
对treeview不熟悉,使用的是一次传一级的生成方法生成4级treeview树的笨办法,也就是页面一load就把所有树枝给装进去了。可是“树大招风”啊,客户端打开很慢(总树枝大概是7000)
我想让我点到第三级的时候才发生selectedchange事件读出4级树枝
但我选其他3级或2级树枝时自动将4级树枝的数据清掉装入新的数据
小弟刚接触treeview控件,一时也找不到相关资料,请CSDN各方神圣指点迷津....问题二
如何点文字不点+-号就可以将树打开关闭?
解决方案 »
- 我用了个treeview 链接到各个页面?点击后颜色改变?
- 关于vs母版页问题
- 报表
- 查询时提示ExecuteReader: CommandText 属性尚未初始化
- .net2.0 连接字串的问题
- Infragistics控件中UltraWebGridExcelExporter另存为excel的用法报错,怪问题!!!
- ASP.NET的安全性问题
- 100分送给你:关于读取xml内容
- 急,请问如何单独控制datagrid的上下左右四个边框的显示与否?
- 我在delphi里拼的ConnectString怎么到.net里不好使了?【在线等待立刻给分】
- 问个主框架向子框架传递参数的问题,在线等
- 有个问题比较急,希望大家能够帮帮忙!!!!!!!!!!!
mytree.SelectExpands=true;
点击文字打开树已解决,谢谢还有问题一高手请帮忙看看
这个想法是一个不错的想法
提点思路,不过怎样只要是希望在selectedchange这个时间中实现一定的操作,那么autopostback就必须设置为true,否则是不能实现的
你可以在selectedchange事件中进行判断,如果是到了第3级,那么进行第4级的装载操作
{
string strTreeName = "TreeView1";
string strRef = Page.GetPostBackEventReference(TreeView1);
string strScript = "<script language=\"JavaScript\"> \n" +
"<!-- \n" +
" function initTreeView() { \n" +
" " + strTreeName +
".onSelectedIndexChange = function() { \n" +
"if (event.oldTreeNodeIndex !=event.newTreeNodeIndex){ \n" +
"this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); \n" +
"if (selectnode()==1 && '" + strRef.Replace("'","\\'") + "'!=null) \n" +
"window.setTimeout('" + strRef.Replace("'","\\'") + "', 0, 'JavaScript'); \n" +
" } } \n" +
" } \n" + "function selectnode() \n" +
"{ \n" +
" var node=TreeView1.clickedNodeIndex; \n" + " if(IndexDemo(node)!=-1) \n" +
" return(1); \n" +
" else \n" +
" return(-1); \n" +
"} \n" +
" function IndexDemo(str1) \n" +
" { \n" +
" var str2=\".\"; \n" +
" var s = str1.indexOf(str2); \n" +
" return(s); \n" + " } \n" +
" function killErrors() { \n" +
" return true; \n" +
" } \n" +
" window.onerror = killErrors; \n" +
"// --> \n" + "</script>";
Page.RegisterClientScriptBlock("InitTree",strScript ); }
--------------------------------
treeview中我只知道一个取得当前选中节点的名称:
this.treeSpec.GetNodeFromIndex(this.treeSpec.SelectedNodeIndex).Text;
如何才能判断到到到了第四级?
另外我的第四级的数据必须是根据123级数决定的
这个比较容易
在SelectedIndexChange事件中
Microsoft.Web.UI.WebControls.TreeNode NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);
string[] slip=NewNode.GetNodeIndex().Split('.');
int i=slip.GetLength(0);
看看i是多少^_^
另:只有你想做,想什么办法都可以做到地
还差怎么取得上级节点的node id
fphuang请赐教
{
protected Microsoft.Web.UI.WebControls.TreeView treeSpec;
SqlClass sc=new SqlClass();
private void Page_Losys(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
CreateRoot();
}
// 在此处放置用户代码以初始化页面
} private void CreateRoot()
{
sc.Open();
SqlDataResyser dr;
dr=sc.GetDataResyser("select * from sys_nsof");
TreeNode RootNode=new TreeNode();
RootNode.Text="价目表";
treeSpec.Nodes.sysd(RootNode);
while(dr.Resys())
{
TreeNode tn=new TreeNode();
tn.Text=dr["nsofName"].ToString();
tn.ID=dr["nsofID"].ToString();
RootNode.Nodes.sysd(tn);
RootNode.Expanded=true;
nsofChildNode(dr["nsofID"].ToString(),tn);
}
sc.Close();
}
private void nsofChildNode(string nsofid,TreeNode nsof)
{
sc.Open();
SqlDataResyser dr=sc.GetDataResyser("select * from sys_Category");
while(dr.Resys())
{
TreeNode category = new TreeNode();
category.Text=dr["sysCategoryName"].ToString();
category.ID=dr["sysCategoryID"].ToString();
nsof.Nodes.sysd(category);
CategoryChild(nsofid,dr["sysCategoryID"].ToString(),category);
}
sc.Close();
}
private void CategoryChild(string nsofid,string CategoryID,TreeNode category)
{
if(CategoryID=="1" && nsofid=="1")
{
sc.Open();
SqlDataResyser dr=sc.GetDataResyser("select SpecCategoryName,nsofid from sys_SpecCategory where nsofid='1'order by SpecCategoryName");
while(dr.Resys())
{
TreeNode spec = new TreeNode();
spec.Text=dr["SpecCategoryName"].ToString();
spec.ID=dr["SpecCategoryName"].ToString();
category.Nodes.sysd(spec);
//CategoryChild(nsofid,dr["sysCategoryID"].ToString(),tn);
}
sc.Close();
}
}
private void treeSpec_SelectedChange(object sender,Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
string nodeValue = this.treeSpec.GetNodeFromIndex(this.treeSpec.SelectedNodeIndex).Text;
// string nnValue=this.treeSpec.GetNodeFromIndex(this.treeSpec.SelectedNodeIndex).Parent.ToString();
// Response.Write(nodeValue.ToString()+"<br>"+nnValue);
TreeNode tn=treeSpec.GetNodeFromIndex(this.treeSpec.SelectedNodeIndex);
string[] slip=tn.GetNodeIndex().Split('.');
int nodelevel=slip.GetLength(0);
for(int i=0;i<nodelevel;i++)
{
Response.Write(slip[i].ToString());
}
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.treeSpec.SelectedIndexChange += new Microsoft.Web.UI.WebControls.SelectEventHandler(this.treeSpec_SelectedChange);
this.Losys += new System.EventHandler(this.Page_Losys); }