Asp.net中Treeview終極解決方案

來源:互聯網
上載者:User
asp.net|treeview|解決
最近在做許可權模組,挺頭痛的東西。不包括許可權部分的業務,還包括許可權部分的介面實現。由於採用了微軟的Treeview控制項來分配許可權,所以碰到網上熱烈討論的有關TreeView操作的重新整理問題,在眾位先人和同事的協助下,終於使Treeview的問題得到了較好的解決。
1、前台控制展開,收縮,Check/UnCheck,後台控制SelectedIndexChanged。
解決方案:
將autopostback設定成false; 
在body裡添加  <body  > 
然後在PageLoad裡寫: 
string  strTreeName  =  "TreeView1"; 
string  strRef  =  Page.GetPostBackEventReference(TreeView1); 
string  strScript  =  "<script  language=\"JavaScript\">  \n"  +  "<!--  \n"  +  "            function  initTree()  {  \n"  +"                        "  +  strTreeName  +  ".onSelectedIndexChange  =  function()  {  \n"  +    "if  (event.oldTreeNodeIndex  !=   
event.newTreeNodeIndex)  \n"  +  "this.queueEvent('onselectedindexchange',  event.oldTreeNodeIndex  +  ','  +  event.newTreeNodeIndex);  \n"  +    "window.setTimeout('"  +  strRef.Replace("'","\\'")    +  "',  0,  'JavaScript');  \n"  +    "                        }  \n"  +      "            }  \n"  +    "//  -->  \n"  +  "</script>"; 
Page.RegisterClientScriptBlock("InitTree",strScript  ); 

2、在CheckBox情況下。在前台選擇checkbox後進行重新整理,發現Checkbox的狀態變得混亂,有些應該被選上的被弄丟了。這個問題是微軟Treeview.htc中的一個bug,而且問題之前網上一直未發現有好的解決方案。昨天發現有位牛哥解決了這個問題,他完善了htc檔案,並且在htc中增加了在checkbox情況下父子聯動的效果,對於需要實現這個功能而對JS不太熟的人真是個福音啊,因為這意味著你不用寫任何代碼就可以實現這個功能了,真是非常感激啊。我把這位牛哥文章的http提供給大家:http://blog.csdn.net/cuike519/archive/2005/02/02/278271.aspx

3、對於SelectedIndexChanged,可以做到進一步的自訂。即如果樹有三層,可以使點擊第一層,第二層時不進行Postback,只是在選擇第三層時才進行Postback。
這個其實就是在第一點上進行修改,對於onSelectedIndexChange 處發的條件進行擴充。上面代碼中只是判斷了如果新節點與舊節點不是同一節點,就觸發SelectedIndexChange,執行_dopostback,你只要將條件改成你想要的限制條件就可以做到你想要的控制。不過要注意if後面的語句啊,if後面沒有跟{號,如果你要加附加條件的話,意味著應該有條件的執行後面兩句。

以上就是我兩天來的成果,呵呵。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。