2010-08-16 2 views
2

Telerik RadGrid에 사용자 지정 편집 양식이 있습니다. 내 편집 양식에는 RadDatePicker가 있으며 여기에 '오늘'버튼이 포함 된 맞춤 바닥 글 템플릿을 추가했습니다.RadGrid에서 클라이언트 ID를 얻는 방법 편집 양식

버튼의 OnClick 이벤트에서 컨트롤 ID를 사용하여 선택한 날짜를 설정하는 Javascript 함수를 호출합니다.

그러나 컨트롤이 편집 양식 안에 있기 때문에 변수가 만들어지지 않으므로 클라이언트 ID를 가져 오려고하면 컴파일러에서 오류가 발생합니다.

<telerik:RadDatePicker ID="ControlName" runat="server" SelectedDate='<%# Bind("Field") %>'> 
    <Calendar ID="Calendar1" runat="server"> 
    <FooterTemplate> 
     <div style="width: 100%; text-align: center; background-color: Gray;"> 
     <input id="Button1" type="button" value="Today" class="button" 
      onclick="GoToToday('<%= ControlName.ClientID %>')" /> 
     </div> 
    </FooterTemplate> 
    </Calendar> 
</telerik:RadDatePicker> 

내가 오류가 된 ClientID를 참조 라인에 CS0103: The name 'ControlName' does not exist in the current context입니다 :

RadDatePicker가 선언된다.

ID를 자바 스크립트 기능에 전달하는 또 다른 방법이 있습니까?

+0

정확한 코드를 사용했지만 오류가 발생하지 않았습니다. 나는 Telerik의 버전을 사용하고있다. 2010.1.519.40 – bodee

답변

1

Telerik RadGrid를 RadAjaxPanel로 래핑 한 다음 바인드 이벤트 I의 서버 측 코드에 배치했습니다. 일부 자바 스크립트 변수를 설정 아약스 패널을 사용 : ClientEvents-OnPopupOpening="AddButtonClickEvent"

페이지는 다음 jQuery를 사용하여 클릭 이벤트 처리기를 바인딩하는 다음과 같은 자바 스크립트를 포함 : 나는 다음 DatePicker에서에 클라이언트 측 이벤트 핸들러를 추가

RadAjaxPanel1.ResponseScripts.Add(string.Format("window['ControlNameId'] = '{0}';", ControlName.ClientID)); 

:

function AddButtonClickEvent(sender, eventArgs) { 
     var cal = window['ControlNameId']; 
     $('#Button1').bind('click', function() { 
     GoToToday(cal); 
     }); 
    } 

그리고 예상대로 작동합니다.

0

시도 : 또한 Page_Load 이벤트에 이벤트 처리기를 설정할 수

OnClick=<%# "GoToToday('" + ControlName.ClientID + "')" %> 

.

+0

그 코드는 내가 페이지를로드 할 때 얻는 것과 같은 오류를 준다. 그 시점까지는 컨트롤이 존재하지 않기 때문에 그리드가 편집 폼을 바인딩 할 때 이벤트 핸들러를 추가해야한다고 생각합니다. –

+0

그래, 네 말이 맞아. 아프지 만 타사 또는 템플릿 컨트롤에서 처음 보았을 때 –

+0

마지막으로 프로젝트 일정에서 다시이 시간을 보았습니다. 안타깝게도 RadDatePicker 달력은 컨트롤 목록을 통해 꼬리말에 아무 것도 노출시키지 않으므로 코드 숨김으로 처리하는 것은 아무 문제가 아닙니다. –

0

폼의 컨트롤에 ClientEvents-OnLoad 이벤트가 도움이 될까요? 아주 아름답지는 않지만 작동하는 것 같습니다.

<script type="text/javascript"> 
    var textBoxFromFormClientObject; 

    function onTextBoxLoad(sender) { 
     textBoxFromFormClientObject = sender; 
    } 
</script> 

그런 다음 영문으로 누르면 당신이 클라이언트에서 얻을 필요가 편집 양식 제어, 그래서이

<rad:RadTextBox ID="txSomeTextBoxe" runat="server" 
ClientEvents-OnLoad="onTextBoxLoad"/> 

같은 추가 이벤트에 대한

페이지

먼저 메이크업 스크립트 편집 또는 그리드에 단추를 삽입하면 양식이 표시됩니다 - 자바 스크립트의 전역 변수가 설정됩니다. 그리고 그것을 사용하여 텍스트 상자를 조작 할 수 있습니다. 유일한 문제는 모든 컨트롤을 조작하려는 경우 폼의 각 컨트롤에 대해 이와 같은 이벤트가 필요하다는 것입니다. (

관련 문제