1、用代碼在treeview web控制項中,添加node的方法
表欄位:編號,父編號,名稱
資料:
1 0 中華人民共和國
2 1 湖南
3 1 湖北
void creattree(string text,TreeNode tnd,string pid)
{
TreeNode t2=new TreeNode();
t2.Text=text;
tnd.Nodes.Add(t2);
產生
string str1 ="父編號 = '"+pid+"'";
DataRow[] dryl = dataSet31.Tables [0].Select(str1);
for(int i=0;i<=dryl.GetUpperBound(0);i++)
{
creattree(dryl[2].ToString(),t2,dryl[0].ToString());
}
}
//
TreeNode t1=new TreeNode();
t1.Text="地區資訊";
TreeView2.Nodes.Add(t1);
creattree("中華人民共和國",t1,"1");
2、如何為TreeView添加事件?
Private Sub TreeView1_indexChanged(ByVal sender As Object, ByVal e As
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs) Handles
TreeView1.SelectedIndexChange
Dim a As Integer
a = TreeView1.SelectedNodeIndex
TextBox1.Text = CStr(a)
End Sub
但是AutoPostBack設定為True的話,TreeView還要重新整理,閃爍,我的TreeView比較龐大
,這可怎麼辦???苦惱中。。。
3、為什麼TreeView 中的SelectedIndexChange為什麼不執行???
AutoPostBack屬性為真,SelectedIndexChange才能被執行。
不過這樣的話你選擇時會感到重新整理得讓你痛苦,根據你的具體實現的目的,採用變通的
方法,盡量不使用SelectedIndexChange事件吧。
selectedindexchange事件掛到控制項上沒有?
InitializeComponent方法中檢查檢查
4、如何判斷 TreeView 的一個節點下是否有子節點???
if(selNode.Nodes.Count==0){
//該節點沒有位元組點
}
5、如何得到 TreeView 的當前選擇節點???
1.Tree.GetNodeFromIndex(Tree.SelectedNodeIndex.ToString())
2.private void TreeView1_SelectedIndexChange(object sender,
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
e.NewNode即為所選節點
6、treeview實現兩層節點沒問題,擴充到無限層就出問題了?
我的那個做法還不夠完善,對於節點數較少的情況可以這樣做,對於節點數較多的情況
,你就不能這樣做了,你應該只載入一級,當點擊節點展開時,再載入它的下一級子節
點。
資料庫結構如下:
表名:Table1
ParentID varchar 20:父節點
ID varchar 20:節點
Name varchar 50:名稱
來來來,這裡給你個常式,再給個我的網頁上的TreeViwe看看,一萬個子節點都沒問題
。
http://dev1.eraserver.net/czc888/webform1.aspx
至於那三個圖象的意義你看我的網頁就知道了。分別表示一頁紙(沒有子節點)、一本
關閉的書(有子節點),一本開啟的書(當前節點被展開)
void creat_node(string
name,Microsoft.Web.UI.WebControls.TreeNode t1,string number)
{
//定義一個新的結點
Microsoft.Web.UI.WebControls.TreeNode t2=new
Microsoft.Web.UI.WebControls.TreeNode();
t2.ID=number;
t2.Text=name;
//判斷是否為根結點
TreeView1.ExpandedImageUrl="images/Depart03.bmp";
if(t1.ID.Trim()=="###")
{
TreeView1.Nodes.Add(t2);
t2.ImageUrl="images/Depart01.bmp";
}
else
{
t1.Nodes.Add(t2);
t2.ImageUrl="images/Depart01.bmp";
t1.ImageUrl="images/Depart02.bmp";
}
//取得這個結點的所有子結點,利用遞迴自動產生
string mySelectQuery = "SELECT ParentID, ID,Name FROM table1
where ParentID='" + number +"'";
string MyConnString="provider=Microsoft.Jet.OLEDB.4.0;Data
Source="+Server.MapPath(".")+"/dt/mydata.mdb";
OleDbConnection myConnection = new
OleDbConnection(MyConnString);
OleDbCommand myCommand = new
OleDbCommand(mySelectQuery,myConnection);
myConnection.Open();
OleDbDataReader myReader;
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
creat_node(myReader.GetString(2),t2,myReader.GetString(1));
}
myReader.Close();
myConnection.Close();
}
private void CreateProviderTreeBtn_Click(object sender,
System.EventArgs e)
{
Microsoft.Web.UI.WebControls.TreeNode t1=new
Microsoft.Web.UI.WebControls.TreeNode();
creat_node("",t1,"###");
說句實話,從來一次掙過兩百分,緊張中……
7、怎樣使用TreeView???
//初始化TreeView資料
private void InitTV(int intVOrderLen)
{
SqlDataReader dr;
SqlCommand myCommand;
string strSel = "select * from bas_enterprise where
len(vieworder)="+intVOrderLen+" order by vieworder";
myCommand = new SqlCommand (strSel, myConnection);
dr=myCommand.ExecuteReader();
while (dr.Read ())
{
TreeNode pNode=new TreeNode ();
pNode.Text =dr["EntpName"].ToString ();
pNode.ID =dr["ViewOrder"].ToString ();
TreeView1.Nodes .Add (pNode);
}
dr.Close ();
}
private void TreeView1_SelectedIndexChange(object sender,
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
TreeNode NewNode=TreeView1.GetNodeFromIndex
(TreeView1.SelectedNodeIndex);
string strNodeId=NewNode.ID .ToString ();
SqlDataReader dr;
SqlCommand myCommand;
int intVOrderLen=strNodeId.Length+2;
string strSel = "select * from bas_enterprise where
len(vieworder)="+intVOrderLen+" and vieworder like '%"+strNodeId+"__%'
order by vieworder";
myCommand = new SqlCommand (strSel, myConnection);
dr=myCommand.ExecuteReader();
NewNode.Nodes .Clear();
while (dr.Read ())
{
TreeNode pNode=new TreeNode ();
pNode.Text =dr["EntpName"].ToString ();
pNode.ID =dr["ViewOrder"].ToString ();
NewNode.Nodes.Add (pNode);
}
dr.Close ();
TreeView1.ExpandLevel=1;
}
8、TreeView控制項事件如何響應?
問題:
我在selectedchange事件中編寫代碼,每次點擊結點時候,介面(1)重新整理,出現閃爍現
象(2)閃爍完成以後,還是在第一結點,沒有回到相應結點,提示值也固定在第一個結
點的值,怎麼解決阿。
答案:
在selectedchange事件中可以找到參數e,裡麵包含了舊的節點和新的節點
不過是用字串表示的,比如是第一個節點下的第一個子節點,就用0.0表示的,轉換為
適合的形式,就可以操作了,令應該是把自動響應事件改為“true”的,否則無法響應的,
雖然比較閃爍,並且每次都是回到第一節點的
9、點擊treeview的一個子節點,開啟一個串連控制目標視窗,有沒有辦法?
treeview的NODE有NavigateURL 以及target屬性
10、Microsoft.Web.UI.WebControls中TreeView瀏覽時不顯示樹形的問題
問題:
我下載安裝了英文版的Microsoft.Web.UI.WebControls,在TreeView的Nodes屬性中添加
了一些節點,但是在IE中瀏覽時不顯示樹形,只是一些文字。我看了論壇上所有有關這
方面的貼子,有人是在伺服器上不顯示樹形,只是一些文字,我的是在本機上都不顯示
樹形,只是一些文字。請各位大俠賜教!
答案:
下載包分自動安裝和手動安裝兩種包
你因該下在自動安裝的包!
11、在treeview中如何尋找一個值,並選中它?
問題:
各位,在已經建好的樹中如何尋找一個文本或者是treenodes的id,找到後選中它?
答案:
for(int i=0;i<TreeView1.Nodes.Count;i++)
if(TreeView1.Nodes==TextBox1.Text)
{
string index1=TreeView1.Nodes.GetNodeIndex();//取得index
TreeView1.SelectedNodeIndex=index1;
}
12、如何取得TreeView中各項的值??
private void TreeView1_SelectedIndexChange(object sender,
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
Microsoft.Web.UI.WebControls.TreeNode
NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);
Label1.Text =NewNo