2011-11-15 55 views
0

的JavaScript訪問我有一個複選框和一個文本框客戶端時,他們沒有在一個tabpanel其工作良好,但是當我把它們放在一個TabContainer的我收到此錯誤:複選框不是在一個tabpanel

「對象引用未設置爲對象的實例。「

這是怎麼回事,當頁面正在努力執行該JS代碼:
VAR chkTotalMiles =的document.getElementById( 「<%= chkTotalMiles.ClientID%>」);

我在阿賈克斯一個tabpanel複選框,這裏是代碼:

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
    </ajaxToolkit:ToolkitScriptManager> 
    <ajaxToolkit:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0"> 
    <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="Ground Transportation"> 
    <ContentTemplate> 
    <h3>Ground Transportation</h3> 
<table> 
<tr> 
<td><asp:CheckBox Checked="false" ID="chkTotalMiles" runat="server" />&nbsp;&nbsp;Total Miles Driven:&nbsp;</td> 
<td><asp:TextBox ID="txtTotalMiles" Enabled="false" runat="server" /></td> 
<td><asp:CheckBox Checked="false" ID="chkTotalGasoline" runat="server" />&nbsp;&nbsp;Total Gasoline Fuel Consumption:&nbsp;</td> 
<td><asp:TextBox ID="txtTotalGasoline" Enabled="false" runat="server" /></td> 
</tr> 
</table> 
    </ContentTemplate> 
</ajaxToolkit:TabPanel> 
    </ajaxToolkit:TabContainer> 

任何想法,我究竟做錯了什麼? 謝謝,Laziale

+0

你想用JavaScript做什麼? –

+0

啓用禁用文本框 – Laziale

+0

所有文本框或特定的文本框? –

回答

0

因爲你不能在TabContainer直接訪問控制,這聽起來像你必須創建在代碼背後的客戶端代碼:

的JavaScript

toggleInputEnabled = function(checkCtrl, txtCtrlID){ 
    var el = document.getElementById(txtCtrlID); 
    if (el){ 
     el.disabled = !checkCtrl.checked; 
    } 
} 

代碼隱藏

在代碼隱藏中,您需要找到TabContainer的活動選項卡中的控件, SSIGN的onclick屬性複選框:

foreach (TabPanel pnl in tbc.Tabs) 
{ 
    var chkCtrl = pnl.FindControl("CheckBox1") as CheckBox; 
    if (chk != null) 
    { 
     var txtCtrl = pnl.FindControl("TextBox1") as TextBox; 
     if (txtCtrl != null) 
     {   
      chkCtrl.Attributes["onclick"] = 
       String.Format("toggleInputEnabled(this, '{0}');", txtCtrl.ClientID); 
     } 
    } 
} 

我不是太熟悉的TabContainer,但我覺得上面的代碼應該是八九不離十。如果只有活動選項卡被渲染,只需刪除循環並找到活動選項卡中的控件。

0

這措辭聽起來像.Net的措辭。我猜測當選項卡不是最新的時候,服務器上的服務器控件不會在服務器端創建。因此,您嘗試訪問服務器控件的客戶端ID失敗。

+0

這不是問題。內容模板中的控件不會像在嚮導或更新面板中那樣顯示,因此您無法直接訪問它們。 –

+0

@JamesJohnson感謝您的澄清!很高興知道! –

相關問題