編寫人:CC阿爸
2015-2-02
今天在這里,我想與大家一起分享如何處理的ASP.net TextBox控件的失去焦點后觸發其它事件的問題,在此做個小結,以供參考。有興趣的同學,可以一同探討與學習一下,否則就略過吧。
1.首先弄清楚問題,asp.net 2.0服務器控件沒有onBlur。因此我們第一個方法是采用
有一點要注意,txtVen的autopostback要設置為true.
<asp:TextBox ID= " txtVen " runat= " server " Width= " 80px " class= " TextBox "
OnTextChanged= " txtVen_TextChanged " AutoPostBack= " true "></asp:TextBox>
public void txtVen_TextChanged( object sender, EventArgs e)
{
string strSQL2 = " SELECT * FROM P_Ven WHERE Ven=' " + txtVen.Text + " ' ";
DataSet ds2 = DS(strSQL2, " Sys ");
if (ds2 == null || ds2.Tables[ 0].Rows.Count == 0)
{
}
else
{
// 帶出幣別
SetSelectedIndex(ddlCurr, ds2.Tables[ 0].Rows[ 0][ " Currency "].ToString());
chkHas_Sure.Checked = Convert.ToBoolean((ds2.Tables[ 0].Rows[ 0][ " Has_Sure "]).ToString());
}
}
以下別以為是大功告成:你會發現根據進不了你定義的后台事件。
OnTextChanged本身就是這樣啊,文本改變了,並不是立即就觸發事件,需要某個東西觸發頁面更新后,它才會起作用
這時你要在頁面的load事件中添加:
textbox1.Attributes["onblur"] = ClientScript.GetPostBackEventReference(控件1, null);
則當textbox 失去焦點的時候,觸發控件1 的事件。
控件1 的事件可以隨意寫。 當寫為:textbox 的 change 事件時, 就在textbox 失去焦點的時候 執行 textbox 的change事件。
這樣就相當入引入了onblur事件。我在程序中加入以下代碼:
txtVen.Attributes["onblur"] = ClientScript.GetPostBackEventReference(txtVen, null);
2.以下方法雖說可以我的問題,但畫面會刷新,需要刷新的方法,當然不是我們希望的。
下面我們使用 AJAX+TextChanged事件 來處理。
后續待補充
以下第二部分為我在程序中采用的解決方案
歡迎加入技術分享群,請留下QQ號碼