如何使用treeview控件?(webform) selectindexchange事件就行了。AutoPostBack 要设为TRUE 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么获得当前所点击的节点?我把初始加载的信息放在page_load中,我点击一次节点,它就重新执行一次page_load里中的代码,怎么会这样呀? page_load肯定是每次都执行的,因为你每次访问aspx页面的时候,页面所对应的类都要重新实例化,所以会触发Load事件,除非把注册事件去掉;private void InitializeComponent(){ //this.Load += new System.EventHandler(this.Page_Load);}不过可以判断页面是第一次被访问还是提交,private void Page_Load(object sender, System.EventArgs e){ //判断页面是第一次被访问还是提交 if(Page.IsPostBack) { } } 有谁有使用treeview的例子呀?给一个吧,谢谢了。 /// <summary> /// PubTreeView 关于生成树和对树的操作。 /// </summary> public class PubTreeView { private string m_sCnnStr=""; public PubTreeView() { // // TODO: 在此处添加构造函数逻辑 // m_sCnnStr = System.Configuration.ConfigurationSettings.AppSettings["Conn"]; } /// <summary> /// 生成零时节点提示 /// </summary> /// <param name="Nds"></param> private void AddNodeTemp(TreeNodeCollection Nds) { TreeNode tn;//声明节点 tn=new TreeNode(); tn.Text="正在生成节点..."; Nds.Add(tn); } /// <summary> /// 生成树的根节点名称和第一级节点 /// </summary> /// <param name="Nds">TreeView的Nodes</param> /// <param name="strTreeName">树根节点名称</param> public void BuildTreeName(TreeNodeCollection Nds,string strTreeName,string strSql,string NodeID,string NodeName) { Nds.Clear(); TreeNode tn = new TreeNode(); tn.Text=strTreeName; tn.ID="treeroot"; Nds.Add(tn); BindTreeNodes(tn.Nodes,strSql,NodeID,NodeName); } /// <summary> /// 动态生成子节点 /// </summary> /// <param name="Nds">TreeView的Nodes</param> /// <param name="strSql">生成节点的Sql语句</param> /// <param name="NodeID">生成树节点的ID值,对应Sql语句中字段名称</param> /// <param name="NodeName">生成树节点的Name值,对应Sql语句中字段名称</param> public void BindTreeNodes(TreeNodeCollection Nds,string strSql,string NodeID,string NodeName) { dsgDAC.oleDatabase oConn = new dsgDAC.oleDatabase(m_sCnnStr); DataSet oDs = new DataSet(); oConn.QueryString = strSql; oConn.QueryDataSet(oDs,"tree"); DataView dv=oDs.Tables["tree"].DefaultView; TreeNode tn;//声明节点 foreach(DataRowView dr in dv) { tn=new TreeNode(); tn.ID=dr[NodeID].ToString(); tn.Text=dr[NodeName].ToString(); Nds.Add(tn); AddNodeTemp(tn.Nodes); } } /// <summary> /// 生成树的根节点名称和第一级节点带URL /// </summary> /// <param name="Nds">TreeView的Nodes</param> /// <param name="strTreeName">树根节点名称</param> /// <param name="NodeUrl">生成树节点链接的URL值</param> /// <param name="UrlTarget">生成树节点URL的Target值</param> public void BuildTreeNameURL(TreeNodeCollection Nds,string strTreeName,string strSql,string NodeID,string NodeName,string NodeUrl,string UrlTarget) { Nds.Clear(); TreeNode tn = new TreeNode(); tn.Text=strTreeName; tn.ID="treeroot"; tn.NavigateUrl=NodeUrl+"?NodeID=0"; tn.Target=UrlTarget; Nds.Add(tn); BindTreeNodesURL(tn.Nodes,strSql,NodeID,NodeName,NodeUrl,UrlTarget); } /// <summary> /// 动态生成子节点节点带URL /// </summary> /// <param name="Nds">TreeView的Nodes</param> /// <param name="strSql">生成节点的Sql语句</param> /// <param name="NodeID">生成树节点的ID值,对应Sql语句中字段名称</param> /// <param name="NodeName">生成树节点的Name值,对应Sql语句中字段名称</param> /// <param name="NodeUrl">生成树节点链接的URL值</param> /// <param name="UrlTarget">生成树节点URL的Target值</param> public void BindTreeNodesURL(TreeNodeCollection Nds,string strSql,string NodeID,string NodeName,string NodeUrl,string UrlTarget) { dsgDAC.oleDatabase oConn = new dsgDAC.oleDatabase(m_sCnnStr); DataSet oDs = new DataSet(); oConn.QueryString = strSql; oConn.QueryDataSet(oDs,"tree"); DataView dv=oDs.Tables["tree"].DefaultView; TreeNode tn;//声明节点 foreach(DataRowView dr in dv) { tn=new TreeNode(); tn.ID=dr[NodeID].ToString(); tn.Text=dr[NodeName].ToString(); tn.NavigateUrl=NodeUrl+"?NodeID="+dr[NodeID].ToString()+""; tn.Target=UrlTarget; Nds.Add(tn); AddNodeTemp(tn.Nodes); } } } 我想把上面的代码做成一个公用类,可是编译的时候提示错误:D:\试验基地\cb_new\PubTreeView.cs(26): 找不到类型或命名空间名称“TreeNodeCollection”(是否缺少 using 指令或程序集引用?)TreeNodeCollection如何声明? 常用数据类型询问 如何取URL返回的字串值? 求kernal.dll错误解决方法 关于数据库与treeview的问题(困扰好多天) 求助,多线程 下 MessageBox.Show UI界面假死 .NET里加密的问题 为什么中文名就不能登陆? 【求助】关于结构的初始化问题!!!!!!!!!!!! 怎样使用TCP在服务器和客户端传输大量得图片文件? power designer9.5的Report模板,不知道是否在这? 用C#做浏览器,有没有办法把滚动条去掉? 如何在WinForm的DataGrid中显示一列为LinkLable?
我把初始加载的信息放在page_load中,我点击一次节点,它就重新执行一次page_load里中的代码,怎么会这样呀?
因为你每次访问aspx页面的时候,
页面所对应的类都要重新实例化,所以会触发Load事件,
除非把注册事件去掉;
private void InitializeComponent()
{
//this.Load += new System.EventHandler(this.Page_Load);}
不过可以判断页面是第一次被访问还是提交,
private void Page_Load(object sender, System.EventArgs e)
{
//判断页面是第一次被访问还是提交
if(Page.IsPostBack)
{
}
}
/// PubTreeView 关于生成树和对树的操作。
/// </summary>
public class PubTreeView
{
private string m_sCnnStr=""; public PubTreeView()
{
//
// TODO: 在此处添加构造函数逻辑
//
m_sCnnStr = System.Configuration.ConfigurationSettings.AppSettings["Conn"];
} /// <summary>
/// 生成零时节点提示
/// </summary>
/// <param name="Nds"></param>
private void AddNodeTemp(TreeNodeCollection Nds)
{
TreeNode tn;//声明节点
tn=new TreeNode();
tn.Text="正在生成节点...";
Nds.Add(tn);
} /// <summary>
/// 生成树的根节点名称和第一级节点
/// </summary>
/// <param name="Nds">TreeView的Nodes</param>
/// <param name="strTreeName">树根节点名称</param>
public void BuildTreeName(TreeNodeCollection Nds,string strTreeName,string strSql,string NodeID,string NodeName)
{
Nds.Clear();
TreeNode tn = new TreeNode();
tn.Text=strTreeName;
tn.ID="treeroot";
Nds.Add(tn);
BindTreeNodes(tn.Nodes,strSql,NodeID,NodeName);
} /// <summary>
/// 动态生成子节点
/// </summary>
/// <param name="Nds">TreeView的Nodes</param>
/// <param name="strSql">生成节点的Sql语句</param>
/// <param name="NodeID">生成树节点的ID值,对应Sql语句中字段名称</param>
/// <param name="NodeName">生成树节点的Name值,对应Sql语句中字段名称</param>
public void BindTreeNodes(TreeNodeCollection Nds,string strSql,string NodeID,string NodeName)
{
dsgDAC.oleDatabase oConn = new dsgDAC.oleDatabase(m_sCnnStr);
DataSet oDs = new DataSet();
oConn.QueryString = strSql;
oConn.QueryDataSet(oDs,"tree"); DataView dv=oDs.Tables["tree"].DefaultView;
TreeNode tn;//声明节点 foreach(DataRowView dr in dv)
{
tn=new TreeNode();
tn.ID=dr[NodeID].ToString();
tn.Text=dr[NodeName].ToString();
Nds.Add(tn);
AddNodeTemp(tn.Nodes);
}
} /// <summary>
/// 生成树的根节点名称和第一级节点带URL
/// </summary>
/// <param name="Nds">TreeView的Nodes</param>
/// <param name="strTreeName">树根节点名称</param>
/// <param name="NodeUrl">生成树节点链接的URL值</param>
/// <param name="UrlTarget">生成树节点URL的Target值</param>
public void BuildTreeNameURL(TreeNodeCollection Nds,string strTreeName,string strSql,string NodeID,string NodeName,string NodeUrl,string UrlTarget)
{
Nds.Clear();
TreeNode tn = new TreeNode();
tn.Text=strTreeName;
tn.ID="treeroot";
tn.NavigateUrl=NodeUrl+"?NodeID=0";
tn.Target=UrlTarget;
Nds.Add(tn);
BindTreeNodesURL(tn.Nodes,strSql,NodeID,NodeName,NodeUrl,UrlTarget);
} /// <summary>
/// 动态生成子节点节点带URL
/// </summary>
/// <param name="Nds">TreeView的Nodes</param>
/// <param name="strSql">生成节点的Sql语句</param>
/// <param name="NodeID">生成树节点的ID值,对应Sql语句中字段名称</param>
/// <param name="NodeName">生成树节点的Name值,对应Sql语句中字段名称</param>
/// <param name="NodeUrl">生成树节点链接的URL值</param>
/// <param name="UrlTarget">生成树节点URL的Target值</param>
public void BindTreeNodesURL(TreeNodeCollection Nds,string strSql,string NodeID,string NodeName,string NodeUrl,string UrlTarget)
{
dsgDAC.oleDatabase oConn = new dsgDAC.oleDatabase(m_sCnnStr);
DataSet oDs = new DataSet();
oConn.QueryString = strSql;
oConn.QueryDataSet(oDs,"tree"); DataView dv=oDs.Tables["tree"].DefaultView;
TreeNode tn;//声明节点 foreach(DataRowView dr in dv)
{
tn=new TreeNode();
tn.ID=dr[NodeID].ToString();
tn.Text=dr[NodeName].ToString();
tn.NavigateUrl=NodeUrl+"?NodeID="+dr[NodeID].ToString()+"";
tn.Target=UrlTarget;
Nds.Add(tn);
AddNodeTemp(tn.Nodes);
}
} }
TreeNodeCollection如何声明?