[英]Fire server side event from Datagrid control via javascript
我有一個帶有TemplateColumn的Datagrid,其中包含一個TextBox。 當用戶在TextBox上按Enter鍵並使其具有焦點時,我想觸發服務器端事件,例如TextChanged。
為此,我在TextBox上運行了一個腳本,並在后面的代碼中注入了腳本。
txt.Attributes.Add("onkeydown", String.Format("javascript:if (event.keyCode == 13)__doPostBack('{0}', '');", txt.ClientID));
該腳本已正確附加到控件,但服務器端事件從未觸發。 定義為:
public void txt_TextChanged(object sender, EventArgs e)
{......}
我還嘗試了__doPostBack('{0}','TextChanged')。
因此,將觸發回發,但永遠不會調用該事件。
對這里可能出什么問題有任何想法嗎?
你可以這樣嘗試...
您可以使用Page對象的GetPostbackEventReference方法注冊ASP.NET服務器控件,該控件可以使用客戶端回調創建回發。
Page.GetPostBackEventReference(txt_sssn_dt);
然后,您可以使用__dPostBack事件來觸發日期選擇器控件(txt_sssn_dt)的TextChanged事件。 該代碼已放置在日期選擇器JavaScript函數中,並且每次用戶從日期選擇器中選擇一個日期時都會觸發該代碼。
__doPostBack("txt_sssn_dt", "TextChanged");
當用戶只想直接在日期選擇器(txt_sssn_dt)中鍵入日期時,還需要編寫一個簡單的JavaScript函數來處理這種情況。 您可以為此編寫一個名為DoPostBack()的JavaScript函數。
function DoPostBack()
{
__doPostBack("txt_sssn_dt", "TextChanged");
}
您必須在日期選擇器控件的OnChange事件上調用此函數。
if(!IsPostback)
{
/...Implementation.../
/.................../
txt_sssn_dt.Attributes.Add("OnChange",
"javascript:return DoPostBack()")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.