2012-10-22 73 views
0

我想爲C#中的文本框創建一個「Click」事件(因爲沒有)。爲文本框和AJAX更新面板控件創建事件

所以,這樣

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request["__EVENTARGUMENT"] != null && Request["__EVENTARGUMENT"] == "txt1OnClick") 
    { 
     txt1_Click(); 
    } 

    txt1.Attributes.Add("onclick", this.Page.ClientScript.GetPostBackEventReference(txt1, "txt1OnClick")); 
} 

private void txt1_Click() 
{ 
    ImageMap1.ImageUrl = "guide/1.jpg"; 
} 

然後我想加載圖像而無需重新加載頁面。

所以我使用了AJAX UpdatePanel控件,這與

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ImageMap1.ImageUrl = "guide/1.jpg"; 
} 

但不能與我創建的事件工作得很好,因爲編譯器不能識別我的新事件 我不能真實的事件或某事不知道。

我按照「Refreshing an UpdatePanel Control with an External Button」的第8步添加了button1_click事件。

沒有在這個選項顯示文本框的Click事件:

textbox

所以我的問題是,有沒有什麼辦法來System.Web.UI.WebControls.TextBox類中添加此事件,或者使上述內此事件可見選項?

這樣我就可以在更新面板的觸發器中包含文本框的單擊事件。

回答

0

如果您嘗試爲TextBox創建Click事件,則每次用戶單擊文本框時,都會觸發回送到服務器(甚至要評估是否需要在處理事件時執行某些操作)。這非常低效 - 您應該使用JavaScript處理瀏覽器中的點擊操作,然後使用客戶端邏輯觸發UpdatePanel。

這樣可以讓您在需要時觸發到服務器的呼叫,但是當您不需要時可以避免它。如果您有服務器端事件處理程序,則每次用戶單擊TextBox時,代碼都會回發到服務器(重新加載頁面)。

您可以閱讀此鏈接(和其他人)有關在客戶端使用__doPostBack()觸發UpdatePanel執行回發。

http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

+0

你說的意思是「使用JavaScript,然後使用客戶端邏輯觸發UpdatePanel的」?我需要從客戶端引用我的更新面板,是否有可能?對不起,我的問題並不涉及,但我認爲你的殿下不會介意...... –

+0

@AbdulMajid是的,你可以做到這一點。我用鏈接更新了答案,請參閱詳細信息。 – xxbbcc