2011-09-26 106 views
3

我正在處理.net 2.0我正在使用多個文本框填充網格視圖。該文本框具有文本更改事件。還有一個點擊事件按鈕。我面臨的問題是,當我在文本框中輸入文本然後單擊按鈕時,文本更改事件被觸發,並且執行不會進入按鈕單擊塊。如何檢測兩個事件被觸發時是否點擊了按鈕。單擊按鈕時發生文本更改事件

沒有與呼叫文本框中的文本改變事件的功能

<asp:TextBox ID="txtChassis" runat="server" CssClass="form_text_box" AutoPostBack="true" OnTextChanged="Chassis_TextChanged"></asp:TextBox> 

,並還呼籲爲按鈕單擊事件的作用。

<input class="form_button" id="btnSearch" title="Show Details" accesskey="S" type="submit" 
                    value="SAVE" name="btnSave" runat="server" onserverclick="btnSearch_ServerClick"/> 

然而,如果文本放置在文本框和按鈕被點擊,則文本改變事件函數被調用。

+0

如果調試它,它會調用「Chassis_TextChanged」同時兩次(如果它是一個asp.net web應用程序 - 像我 - 不知道的WinForms)......實際上,它將來回跳轉爲你一步通了代碼,它顯然運行了兩次。然後它不會運行提交按鈕代碼,除非您再次單擊提交按鈕。你有沒有想出一個解決方法?我仍然看着我的應用需要做回發。 –

回答

1

您的問題是,ASP中的事件只會在回傳後引發。
如果按鈕被推送,並且客戶端回發(其名稱爲他的字段數據),則發佈回發。
在此PostBack之後,服務器(您的應用程序)會調用上次Page_Load期間發生的所有事件。
據我所知,沒有真正的事件發生順序,但textChanged事件應該拋出。
如果您希望在Text更改後直接處理textChanged事件,則必須使用「AutoPostBack」作爲Myat Thu已經提到的內容。請注意,這會增加您的流量顯示,並且還可以改變代碼的流向!
我建議設計事件indipendet,以便用戶可以點擊「回發按鈕」,所有事件都會在一個帖子後面被調用。這可以節省服務器上的流量和負載。
但這只是我個人的看法。

0

您是否正在編寫窗口應用程序或Web應用程序的代碼?如果你正在編寫一個Web應用程序,也有文本框它們的屬性:

CaseValidation
的AutoPostBack

你應該嘗試這兩種特性,爲您的文本框對象。