2009-04-08 7 views
1

テキスト領域がAjaxタブ内にあるときに、テキスト領域にNiceEditツールバーを追加するスクリプトの使用に問題があります。Ajaxタブ内に存在するコントロールを参照する方法は?

IDとは別の方法で参照する必要があるかどうかを知りたいと思います。

私はそのテキストエリアのIDを意味します、私はタブコンテナの外にテキストエリアを取ろうとしましたが、それは機能しますが、私がそれを返すとき、それは単にありません。

<%@ Page Language="VB" ValidateRequest ="false" AutoEventWireup="false" CodeFile="tabbedNiceEditt.aspx.vb" Inherits="Client_tabbedNiceEditt" %> 
<script src="../nicEdit/nicEdit.js" type="text/javascript"></script> 

<script type="text/javascript"> 
bkLib.onDomLoaded(function() { 
new nicEditor({buttonList : ['fontSize','fontFamily','fontFormat','bold','italic','underline','strikethrough','forecolor','bgcolor','removeformat'], iconsPath : '../nicEdit/nicEditorIcons.gif'}).panelInstance('txt'); 
}); 
</script> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Untitled Page</title> 
    <script type="text/javascript"> 

     function pageLoad() { 
     } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 

    <div> 


     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <cc1:TabContainer ID="TabContainer1" runat="server"> 
     <cc1:TabPanel ID= "first" runat ="server" > 
     <ContentTemplate> 
     <b>Stuff Goes HERE</b> 
     <br /> 
     <asp:TextBox ID = "txt" name = "txt" runat ="server" TextMode ="MultiLine" Height = "256" Width = "256"> 
     </asp:TextBox> 
     <br /> 
     <br /> 
     <asp:Button id = "btn" runat ="server" Text = "click" /> 
     </ContentTemplate> 
     </cc1:TabPanel> 
     <cc1:TabPanel ID = "second" runat ="server" > 
     <ContentTemplate> 
     <b>More Stuff for second tab</b> 
     </ContentTemplate> 
     </cc1:TabPanel> 
     </cc1:TabContainer> 
    </div> 
    </form> 
</body> 
</html> 

答えて

2

txtがあなたのコントロールのサーバー IDである、あなたはクライアント IDを使用する必要があります。

....panelInstance('<%= txt.ClientID %>'); 

基本的には、クライアントIDは、サーバーのIDと名前付けコンテナから派生しています名前の衝突を避けるために、あなたのコントロールがどこにあるのかを示します。テキストエリアがAjaxタブにない場合、クライアントIDはサーバIDと同じです。テキストエリアをAjaxタブに置くと、クライアントIDは異なります(ブラウザのページソースを確認することで確認できます)。


EDIT:あなたのソースコードでpanelInstance('<%= txt.ClientID %>')を配置する必要があり、かつasp.netがpanelInstance('TabContainer1$first$txt')にすることをを変換します:MAEN

何を意味しません

I viewed the page in browser, checked the ID in the page source, it was "TabContainer1$first$txt", used it instead of "txt" and the script was like: panelInstance('<%= txt.TabContainer1$first$txt %> I got an error: BC30456: 'TabContainer1' is not a member of 'System.Web.UI.WebControls.TextBox'.

から

私は、クライアントIDがもはや "txt"ではなく、サーバーIDとネーミングコンテナから構成されていることを確認するために、Webブラウザのページソースをチェックするように指示しました。

+0

私はブラウザでページを見て、ページソースのIDをチェックしました。それは "TabContainer1 $ first $ txt"でした。 "txt"の代わりにそれを使用し、スクリプトは panelInstance( '<%= txt。 TabContainer1 $ first $ txt%> エラーが発生しました: BC30456: 'TabContainer1'は 'System.Web.UI.WebControls.TextBox'のメンバーではありません。 – Maen

+0

@Maen、私の編集を参照してください – ybo

+0

大変申し訳ありませんあなたの時間は、しかし、私の初心者の言い訳をしてください:P私は今何をしなければならないと簡単な言葉で:コードは正確に: .... panelInstance( '<%= txt.ClientID%>') もしそうなら、 、エラーはありませんが、スクリプトはまだ動作していません、テキスト領域 "txt"はフォーマットパネルを何も取得していません.. !!? – Maen

関連する問題