2009-04-08 2 views
1

텍스트 영역이 Ajax 탭 내에있을 때 텍스트 영역에 NiceEdit 도구 모음을 추가하는 스크립트를 사용하는 데 문제가 있습니다.Ajax 탭에있는 컨트롤을 참조하는 방법은 무엇입니까?

나는 ID와 다른 방식으로 참조해야하는지 알고 싶습니다.

해당 텍스트 영역의 ID를 의미합니다. Tab 컨테이너 외부에서 텍스트 영역을 가져 오려고했으나 작동하지만 반환 할 때 단순히 반환하지 않습니다.

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

기본적으로, 클라이언트 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를 사용해야합니다 이름 지정 충돌을 피하기 위해 귀하의 통제가있는 곳. 텍스트 영역이 Ajax 탭에 없으면 클라이언트 ID는 서버 ID와 동일합니다. Ajax Tab에 텍스트 영역을 넣으면 클라이언트 ID가 다릅니다 (브라우저에서 페이지 소스를 보면 확인할 수 있습니다).


편집 : 당신이 당신의 소스 코드에서 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와 명명 컨테이너로 구성되었음을 확인했습니다.

+0

브라우저에서 페이지를보고 페이지 소스에서 ID를 확인한 후 "TabContainer1 $ first $ txt"였고 "txt"대신 스크립트를 사용했으며 스크립트는 panelInstance ('<% = txt. TabContainer1 $ first $ txt %> 오류가 발생했습니다. BC30456 : 'TabContainer1'은 'System.Web.UI.WebControls.TextBox'의 구성원이 아닙니다. – Maen

+0

@Maen, 내 편집 참조 – ybo

+0

죄송합니다. 당신의 시간,하지만 내 newcieness 변명 : P 지금은 무엇을해야하고 간단한 단어로 : .... panelInstance ('<% = txt.ClientID %>') 만약 그렇다면, 내가 그랬어 , 오류는 없지만 여전히 스크립트가 작동하지 않습니다. 텍스트 영역 "txt"는 서식 패널을 얻지 못합니다 .. !! – Maen

관련 문제