2011-02-07 15 views
0

在ASP.Net中,我嘗試創建WebControl。在這個控件中,我用我的html控件重寫了RenderControl方法。將服務器控件添加到我自定義的webcontrol中,該控件會觸發javascript函數和服務器端函數

protected override void RenderContents(HtmlTextWriter output) 
{ 
    output.Write(@"<table><tr><td>"); 
    output.Write(@"<input type=""submit"" name=""btnExecute"" value=""Execute"" id=""btnExecute"" />"); 
    output.Write(@"</td></tr></table>"); 
} 

我怎樣才能使按鈕調用點擊事件,以便在服務器端方法btnExecute_Click()的調用?此外,該按鈕甚至在服務器端之前調用JavaScript函數。

請建議如何使它工作。

回答

0

查看關於如何實現CompositeControl(這是WebControl的派生)的示例。

http://msdn.microsoft.com/en-us/library/3257x3ea.aspx#Y114

你的按鈕,將存在爲你綜合的私有成員。您將初始化它並將其連接到CreateChildControls中的服務器端方法。然後,當您覆蓋CompositeControl的Render方法時,您將調用按鈕的RenderControl方法。這樣做會使該按鈕發出將click事件連接到一個asp.net回發的javascript。

至於在回調之前運行的JS ......那麼這可能有點棘手。我的建議是隻給Button一個獨特的CSS類,並用jQuery連接你的方法。然而,我不知道你將如何延遲ASP.Net回發,直到你的客戶端方法完成爲止...對我來說,這感覺就像一個模式混蛋,看起來你會想要做所有這些服務器端(傳統Asp.Net控件與回發)或做到這一切客戶端(jQuery與Ajax)。

+0

感謝Tangled2。我會試試這個,很快就會回來。 – 2011-02-08 21:54:24

相關問題