2010-10-25 51 views
1

我已經創建動態控件在ASP.NET如下創建..如何找到在Java腳本動態控制使用asp.net

首先我創建複選框爲

CheckBox chkDynamic = new CheckBox(); 

然後

TextBox txtDynamic = new TextBox(); 
txtDynamic.ID = "txtDynamic"; 

和這些控件添加在表格中添加在表格中添加在表格中添加在aspPanel中(僅在設計頁面創建的面板)

現在我需要..選中複選框時,我想用JavaScript

我嘗試以下方法,但不工作以清除txtDynamic文本框..

chkDynamic.Attributes["onclick"] = "javascript:document.getElementById('" + txtDynamic.UniqueID + "').value='';"; 

我也試圖與調用方法

chkDynamic.Attributes.Add("onclick", "javascript:ClearText(this)"); 

但在此方法下面的行給我錯誤未找到「txtDynamic」..因爲控制添加動態。

document.getElementById("<%= txtDynamic.ClientID %>").value=""; 

在此先感謝....

回答

1

經過大量的調試我喜歡的答案。什麼ASP.Net在運行時做它改變控制器的ClientID與附加父控制一些前綴所以在我現在創建的所有TR的末尾添加整個表之前我做了什麼來解決這個我已經添加桌子面板爲plDynamicControls.Controls.Add(tblGeneralControls);然後我添加下面的代碼,它的作品像魅力

chkDynamic.Attributes["onclick"] = string.Format("yearSuffixCHK(this, '{0}')", txtDynamic.ClientID); 
txtDynamic.Attributes["onchange"] = string.Format("yearSuffixTXT(this, '{0}')", chkDynamic.ClientID); 
0

你有沒有保證是越來越執行這個腳本的時候,你的文本已經被加載到DOM?

我建議註冊控制的UniqueID /客戶端ID在從服務器側的JavaScript變量。

然後在客戶端上的整個DOM加載後綁定上的複選框,單擊事件,然後做清理文本

的各自的工作(你可以確保在寫劇本的DOM加載要麼頁的結束,或者使用的document.ready如果你使用jQuery)

感謝,
Pranav Kauhik
pranavkaushik.wordpress.com

0

當您插入控件?如果你在Page_Load中使用它,它將不起作用。如果你還沒有,我會建議在Page_Init(或Page_PreInit)中插入控件。

此外,使用客戶端ID,而不是因爲的UniqueID的UniqueID可以包含冒號(:),這是無效的HTML ID屬性(以及在變量名是不允許客戶端腳本)。