Web控件TreeView展开无闪烁的两个解决方法
生活随笔
收集整理的這篇文章主要介紹了
Web控件TreeView展开无闪烁的两个解决方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
已經(jīng)無(wú)數(shù)次見(jiàn)到有人提出這個(gè)問(wèn)題了。。。。。 ?
?
第一種。。。。。 ?
?
用.net控件TreeView而展開(kāi)時(shí)不刷新的變通方法主要有以下步驟: ?
?
1。在Page_Load中為你的TreeView添加以下屬性,這句話(huà)為T(mén)reeView添加Click時(shí)的回發(fā)事件。 ?
?
TreeView1.Attributes["OnClick"] ?= ?@"javascript: ?window.setTimeout('__doPostBack(\'TreeView1\',\'\')', ?0, ?'JavaScript')"; ?
?
2。在.aspx頁(yè)面文件中添加一個(gè)隱藏的Button用來(lái)產(chǎn)生TreeView的回發(fā)事件: ?
?
<INPUT ?id="Button1" ?style="DISPLAY:none;" ?type="button" ?value="Button" ?name="Button1" ?runat="server"> ?
?
?? ?? ?? ??這個(gè)Button必須為Html控件,并將其轉(zhuǎn)為在服務(wù)器端運(yùn)行。 ?
?? ?? ?? ??style="DISPLAY:none;"該句用來(lái)在頁(yè)面隱藏Button。 ?
?? ?? ?? ??在Visual.net的設(shè)計(jì)界面雙擊該Button產(chǎn)生以下事件: ?
?? ?? ?? ??private ?void ?Button1_ServerClick(object ?sender,System.EventArgs ?e) ?
?? ?? ?? ??{ ?
?? ?? ?? ?? ?? ?? ?? ?? ?
?? ?? ?? ??} ?
?? ?? ?? ??這里不用添加任何代碼,目的是當(dāng)服務(wù)器處理該頁(yè)面并發(fā)送給客戶(hù)端時(shí)產(chǎn)生下面客戶(hù)端腳本: ?
?? ?? ?? ??<script ?language="javascript"> ?
?? ?? ?? ??<!-- ?
?? ?? ?? ??function ?__doPostBack(eventTarget, ?eventArgument) ?{ ?
?? ?? ?? ?? ?? ?? ?? ??var ?theform ?= ?document.Form1; ?
?? ?? ?? ?? ?? ?? ?? ??theform.__EVENTTARGET.value ?= ?eventTarget; ?
?? ?? ?? ?? ?? ?? ?? ??theform.__EVENTARGUMENT.value ?= ?eventArgument; ?
?? ?? ?? ?? ?? ?? ?? ??theform.submit(); ?
?? ?? ?? ??} ?
?? ?? ?? ??// ?--> ?
?? ?? ?? ??</script> ?
?? ?? ?? ??這段代碼用于回應(yīng)TreeView的Click事件。。。。。。。。。。。。。。。。。。。此代碼不用手工添加。。。。。 ?
?
3。好。。。大功告成。。。為你的TreeView添加TreeView1_SelectedIndexChange事件: ?
?? ?? ?? ??在設(shè)計(jì)界面,TreeView上右鍵屬性。。。事件。。找到SelectedIndexChange。。。雙擊。。在cs文件中產(chǎn)生。。 ?
?? ?? ?? ??private ?void ?TreeView1_SelectedIndexChange(object ?sender, ?Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs ?e) ?
?? ?? ?? ??{ ?
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
?? ?? ?? ??} ?
?? ?? ?? ??在里面添加測(cè)試代碼。。。 ?
?
?? ?? ?? ??Microsoft.Web.UI.WebControls.TreeNode ?NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex); ?
?? ?? ?? ??Response.Write(NewNode.GetNodeIndex()); ?
?
?
測(cè)試地址。。。。 ?
http://eu.webmatrixhosting.net/ganggang/tree.aspx。。。 ?
有點(diǎn)慢大家諒解。。。 ?
?
?
第二種。。。。。 ?
?
關(guān)于類(lèi)似的TreeView展開(kāi)不提交,點(diǎn)擊才提交,我也有一個(gè)方法。。。此乃hgknight方法也。。。。 ?
?
http://eu.webmatrixhosting.net/hgknight/tree.aspx ?
?
方法如下 ?
?
可以將autopostback設(shè)置成false; ?
在body里添加 ?<body ?οnlοad="initTree()"> ?
然后在PageLoad里寫(xiě): ?
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 ?); ?
?
這樣就只有你點(diǎn)擊的節(jié)點(diǎn)更改的時(shí)候才提交! ?
?
?
個(gè)人認(rèn)為。。。。hgknight(江雨.net)的方法要更好一點(diǎn)。。。 ?
?
雖然原理相似。。。但我的用的是Click事件。。這導(dǎo)致。。。點(diǎn)擊同一節(jié)點(diǎn)時(shí)也會(huì)回發(fā)頁(yè)面。。。。雖然這時(shí)不會(huì)觸發(fā)。。。。SelectedIndexChange事件。。。這一點(diǎn)需要改進(jìn)。。。。。
?
第一種。。。。。 ?
?
用.net控件TreeView而展開(kāi)時(shí)不刷新的變通方法主要有以下步驟: ?
?
1。在Page_Load中為你的TreeView添加以下屬性,這句話(huà)為T(mén)reeView添加Click時(shí)的回發(fā)事件。 ?
?
TreeView1.Attributes["OnClick"] ?= ?@"javascript: ?window.setTimeout('__doPostBack(\'TreeView1\',\'\')', ?0, ?'JavaScript')"; ?
?
2。在.aspx頁(yè)面文件中添加一個(gè)隱藏的Button用來(lái)產(chǎn)生TreeView的回發(fā)事件: ?
?
<INPUT ?id="Button1" ?style="DISPLAY:none;" ?type="button" ?value="Button" ?name="Button1" ?runat="server"> ?
?
?? ?? ?? ??這個(gè)Button必須為Html控件,并將其轉(zhuǎn)為在服務(wù)器端運(yùn)行。 ?
?? ?? ?? ??style="DISPLAY:none;"該句用來(lái)在頁(yè)面隱藏Button。 ?
?? ?? ?? ??在Visual.net的設(shè)計(jì)界面雙擊該Button產(chǎn)生以下事件: ?
?? ?? ?? ??private ?void ?Button1_ServerClick(object ?sender,System.EventArgs ?e) ?
?? ?? ?? ??{ ?
?? ?? ?? ?? ?? ?? ?? ?? ?
?? ?? ?? ??} ?
?? ?? ?? ??這里不用添加任何代碼,目的是當(dāng)服務(wù)器處理該頁(yè)面并發(fā)送給客戶(hù)端時(shí)產(chǎn)生下面客戶(hù)端腳本: ?
?? ?? ?? ??<script ?language="javascript"> ?
?? ?? ?? ??<!-- ?
?? ?? ?? ??function ?__doPostBack(eventTarget, ?eventArgument) ?{ ?
?? ?? ?? ?? ?? ?? ?? ??var ?theform ?= ?document.Form1; ?
?? ?? ?? ?? ?? ?? ?? ??theform.__EVENTTARGET.value ?= ?eventTarget; ?
?? ?? ?? ?? ?? ?? ?? ??theform.__EVENTARGUMENT.value ?= ?eventArgument; ?
?? ?? ?? ?? ?? ?? ?? ??theform.submit(); ?
?? ?? ?? ??} ?
?? ?? ?? ??// ?--> ?
?? ?? ?? ??</script> ?
?? ?? ?? ??這段代碼用于回應(yīng)TreeView的Click事件。。。。。。。。。。。。。。。。。。。此代碼不用手工添加。。。。。 ?
?
3。好。。。大功告成。。。為你的TreeView添加TreeView1_SelectedIndexChange事件: ?
?? ?? ?? ??在設(shè)計(jì)界面,TreeView上右鍵屬性。。。事件。。找到SelectedIndexChange。。。雙擊。。在cs文件中產(chǎn)生。。 ?
?? ?? ?? ??private ?void ?TreeView1_SelectedIndexChange(object ?sender, ?Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs ?e) ?
?? ?? ?? ??{ ?
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
?? ?? ?? ??} ?
?? ?? ?? ??在里面添加測(cè)試代碼。。。 ?
?
?? ?? ?? ??Microsoft.Web.UI.WebControls.TreeNode ?NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex); ?
?? ?? ?? ??Response.Write(NewNode.GetNodeIndex()); ?
?
?
測(cè)試地址。。。。 ?
http://eu.webmatrixhosting.net/ganggang/tree.aspx。。。 ?
有點(diǎn)慢大家諒解。。。 ?
?
?
第二種。。。。。 ?
?
關(guān)于類(lèi)似的TreeView展開(kāi)不提交,點(diǎn)擊才提交,我也有一個(gè)方法。。。此乃hgknight方法也。。。。 ?
?
http://eu.webmatrixhosting.net/hgknight/tree.aspx ?
?
方法如下 ?
?
可以將autopostback設(shè)置成false; ?
在body里添加 ?<body ?οnlοad="initTree()"> ?
然后在PageLoad里寫(xiě): ?
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 ?); ?
?
這樣就只有你點(diǎn)擊的節(jié)點(diǎn)更改的時(shí)候才提交! ?
?
?
個(gè)人認(rèn)為。。。。hgknight(江雨.net)的方法要更好一點(diǎn)。。。 ?
?
雖然原理相似。。。但我的用的是Click事件。。這導(dǎo)致。。。點(diǎn)擊同一節(jié)點(diǎn)時(shí)也會(huì)回發(fā)頁(yè)面。。。。雖然這時(shí)不會(huì)觸發(fā)。。。。SelectedIndexChange事件。。。這一點(diǎn)需要改進(jìn)。。。。。
轉(zhuǎn)載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/09/11/500922.html
總結(jié)
以上是生活随笔為你收集整理的Web控件TreeView展开无闪烁的两个解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阅读《Google成功七堂课》
- 下一篇: 电脑注册表被停用