2012-07-09 2 views
4

하나의 사용자 정의 컨트롤을 만들어 달력에서 날짜를 선택했습니다. jquery 플러그인을 사용하여 만들었습니다. 내 문제는 제대로 작동하지 않는 aspx 페이지에 사용자 정의 컨트롤을 넣을 때입니다. 내 말은 하나의 컨트롤이 두 번째 작업을하는 것보다 두 번 올리는 것이 나에게 오류를 준다는 의미입니다. 내가 파일동일한 웹 페이지에서 웹 사용자 정의 컨트롤을 여러 번 사용하는 방법은 무엇입니까?

string jquery = string.Empty; 
    jquery = "window.addEvent('domready', function() { new CalendarEightysix('exampleIII', { 'excludedWeekdays': [0, 6], 'toggler': 'imgClick', 'offsetY': -4 });}); "; 


    Page.ClientScript.RegisterStartupScript(typeof(Page), "a key", "<script type=\"text/javascript\">" + jquery + "</script>"); 

사용자 제어 코드 뒤에 코드에서 jQuery를 등록 작성한

코드입니다.

<script src="JS/mootools-1.2.4-core.js" type="text/javascript"></script> 
<script src="JS/mootools-1.2.4.4-more.js" type="text/javascript"></script> 
<script src="JS/calendar.js" type="text/javascript"></script> 
<link href="CSS/calendar.css" rel="stylesheet" type="text/css" /> 

<table cellpadding="0"> 
    <tr> 
    <th> 
     <asp:Label ID="lblHeading" runat="server" Text="Date"></asp:Label> 
    </th> 
    <td> 
     <input id="exampleIII" name="dateIII" readonly="readonly" type="text" maxlength="10" 
     style="padding-right: 15px;" /> 
     <img src="Images/calendar.gif" alt="" id="imgClick" /> 
    </td> 
    </tr> 
</table> 

제발 도와주세요. 미리 감사드립니다.

+3

우리에게 더 많은 것을 제공해야합니다. 왜 작동하지 않는가에 대한 많은 이유가 있습니다. 우리에게 몇 가지 코드를 보여주세요. – freefaller

+0

나는 틀린 jquery 선택자 (아마 id)를 사용하여 그 달력을 보여줄 준비가되었습니다. – nunespascal

+0

@ freefaller : 내 질문보기 .. 업데이트했습니다 .. – user968441

답변

4

컨트롤에 장소 동적 ID가 없거나 동적 자바 스크립트가 초기화 되었기 때문에 문제가 발생했는지 확인하십시오. 밖으로 하나의 usercontrol로드 ID를 변경하면 JavaScript를 사용하려고 할 때 충돌이 발생합니다.

동적 ID를 만들려면 동일한 컨트롤의 ClientID 특성을 사용할 수 있습니다.

<input id="exampleIII<%=ClientID%>" name="dateIII<%=ClientID%>" readonly="readonly" 
: 코드에

, 동적 변경해야 할 점은 당신이 당신의 ID 현재의 UserControl ID 등의 끝 부분에 추가, 간단한 HTML 컨트롤을로 선택하는 것이 모든 입력의 첫 번째입니다

<img src="Images/calendar.gif" alt="" id="imgClick<%=ClientID%>" /> 

에 그런 다음 당신은 당신의 자바 스크립트를 변경 :

string jquery = string.Empty; 
    jquery = "window.addEvent('domready', function() { new CalendarEightysix('exampleIII"+ ClientID + "', { 'excludedWeekdays': [0, 6], 'toggler': 'imgClick"+ ClientID + "', 'offsetY': -4 });}); "; 

    Page.ClientScript.RegisterStartupScript(typeof(Page), "akey"+ClientID, "<script type=\"text/javascript\">" + jquery + "</script>"); 

및로드 요 UR 일반적인 자바 스크립트 라이브러리 만 마스터 페이지에 있거나 Page.ClientScript.RegisterStartupScript

ps : id="exampleIII<%=ClientID%>"을 사용하십시오. ClientID이 자기 만의 준비가되어 있기 때문에 컨트롤을 렌더링하십시오. 따라서 ClientID와 exampleIII를 모두 사용하여 최종 이름을 얻게됩니다.

다른 방법으로는 <%= %>을 사용하여 UpdatePanels에 문제가 있으므로 asp.net 컨트롤 버튼을 만드는 것입니다. asp.net 컨트롤을 만들면 ControlName.CliendID이 자바 스크립트 초기화에 사용됩니다.

+0

당신의 코드처럼 퍼팅하는 동안 날짜 선택기가 두 번 열립니다. – user968441

+0

@ user968441 이것은 생각입니다.이 세부 정보를 보려면 코드를 디버깅하지 마십시오 ... 두 개의 텍스트 편집기에서 렌더링 된 내용을 확인하십시오. – Aristos

+0

@ user968441 또한 id라는 이름을 변경합니다. – Aristos

0

여러 UserControls가 페이지에 포함되어있는 경우 클라이언트 측 문제의 일반적인 이유는 고정 ID가있는 HTML 마크 업을 사용하기 때문입니다. UserControl을 두 번 이상 포함하면 중복 ID가있는 요소가 생성됩니다.

코드를 보지 않고도 더 정확하게 표현할 수 없습니다.

0

자바 스크립트 코드에서 exampleIII을 사용할 수 없습니다. 입력 태그 대신 텍스트 상자를 사용하십시오.

여기서 asp.net ClientID을 사용해야합니다. 이 같은

<asp:TextBox ID="exampleIII" runat="server"></asp:TextBox> 
<asp:LinkButton ID="imgClick" runat="server"></asp:LinkButton> 

뭔가 :

jquery = "window.addEvent('domready', function() { new CalendarEightysix('" + exampleIII.ClientID + "', { 'excludedWeekdays': [0, 6], 'toggler': '" + imgClick.ClientID + "', 'offsetY': -4 });}); "; 


Page.ClientScript.RegisterStartupScript(typeof(Page), "a key", "<script type=\"text/javascript\">" + jquery + "</script>"); 

은 참조를 다음과 같이

는 컨트롤을 변경

웹 서버 컨트롤은 HTML 요소로 렌더링됩니다 ClientID

의 id HTML 요소의 속성이 ClientID의 값으로 설정됩니다.속성 ClientID 값은 종종 document.getElementById 메소드를 사용하여 클라이언트 스크립트의 HTML 요소 에 액세스하는 데 사용됩니다.

+0

불건전 메시지 신고 수정 됨. – nunespascal

관련 문제