單獨控制IE WebControl裡面的Treeview的幾個動作的Postback

來源:互聯網
上載者:User
treeview|web|控制 在使用這個TreeView是經常需要將動作PostBack到伺服器端來做一些資料操作,如OnExpanded或者SelectIndexChange等。TreeView控制項提供了一個AutoPostBack的屬性來設定這個TreeView是否需要進行PostBack的動作來讓後台操作資料。但是這個屬性一旦設成True的話,那麼TreeView的所有動作都會PostBack回去將頁面重新整理,不管是Expaned還是SelectIndexChangek都PostBack回去一次,很多時候我們只是需要將其中的某種事件Postback回去而已。如果所有的事件都Postback的話,不但影響使用者體驗還有影響系統效能。解決這個問題的方法是自己處理每種動作的Postback,如果條件不成立就不Postback,盡量減少不必要的Postback。

下面就舉個例子講講怎麼自己控制Postback的動作。

protected Microsoft.Web.UI.WebControls.TreeView tvSchema;

private void Page_Load(object sender, System.EventArgs e)

{


if(!IsPostback)
{
//修改Expand用戶端事件的代碼
string script = @"javascript: if (this.clickedNodeIndex != null){
this.queueEvent('onexpand', this.clickedNodeIndex);
expandedTable(this,this.clickedNodeIndex);
}
";
tvSchema.Attributes["onexpand"]=script;
}
//註冊控制指令碼

RegisteTreeScript();

}

private void RegisteTreeScript()

{

string script

= @"<script language='javascript'>

function expandedTable(sender,_nodeIndex)

{



var node=sender.getTreeNode(_nodeIndex);



//如果沒有子物件時就postback;

if(node.getChildren().length==0)

"+GetPostBackEventReference(tvSchema)+@";

}

</script>";

this.RegisterClientScriptBlock("tvSchema",script);

}

private void tvSchema_Expand(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)

{

//根據選中的目標,自己產生子樹

}

在上面的代碼中RegisteTreeScript()函數裡大部分都是用戶端的指令碼而已,但是這些用戶端指令碼不能夠觸發頁面的Postback的,所以需要調用GetPostBackEventReference(tvSchema)來產生Postback的指令碼,不過這個函數的不只是返回__doPostBack('tvSchema','');這個字串這麼簡單。當你的頁面上沒有其他Postback動作的WebControl時,他就會自動產生那個__doPostBack的用戶端指令碼了。





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。