2011-08-28 3 views
0

ASP 리피터를 사용하고 있습니다. <ItemTemplate><AlternatingItemTemplate>에는 다른 레이블들 중에서 클릭 할 때 다른 javascript/jquery 호출을하는 3 개의 HTML 버튼 (<input type="button"...)이 있습니다. 이것은 잘 작동합니다.ASP Repeater의 Button에서 Javascript를 호출 하시겠습니까?

이제 Repeater에 바인딩 된 boolean을 기반으로 이러한 버튼을 동적으로 표시하거나 숨기려고합니다.

Visible='<%# Eval(bMyBoolean) %>' 

내가 ASP 버튼 내 HTML 버튼을 전환하지만 내가 자바 스크립트를 가져올 수 없습니다 제대로 작동하려면 호출 시도 : 내가 ASP 버튼을 사용한다면 나는 단순히 같은 것을 사용할 수 있다는 것을 알고있다. Repeater.ItemDataBound 이벤트의 각 버튼에 대한 코드에서 자바 스크립트 호출을 연결할 수 있다는 것을 알고 있지만, 내 시나리오의 코드 뒤에있는 방법을 잘 모르겠습니다. 여기 내 HTML 버튼 중 하나의 예입니다 : 위의 예에서

<input type="button" id="myButton" value="Test" onclick="MyJavascriptFunction(this,'<%# CType(Container.DataItem, myClassObject).FirstName%>');" /> 

, 내 자바 스크립트로 (I 중계기에 결합하는거야 클래스 객체의 속성입니다)에 FIRSTNAME 값을 전달 해요 기능.

저에게 ASP Repeater를 사용하고있는 것처럼 보이면 ASP 단추를 사용하는 것이 좋겠지 만 실제로 차이가 나는지 모르겠습니다.

그래서 내 질문은입니다. 어떻게 리피터에 바인딩 된 부울 값을 기반으로 ASP Repeater에서 HTML 단추를 동적으로 표시하거나 숨길 수 있습니까? 또는 그 나쁜 연습 경우 위의 호출 (Repeater에서 값을 참조하는) 같은 ASP 단추를 사용하여 자바 스크립트 호출을 만들 수 있습니까?

도움/조언을 미리 보내 주셔서 감사합니다!

답변

1

부울을 기반으로 스타일 정보를 동적으로 출력 할 수 있습니다. 이것을 고려 : 코드에서 다음

<itemTemplate> 
    <input type='button' style='<%# getVisbility(Eval("MyBoolValue")) %>' 
      value='click me' /> 
</itemTemplate> 

을, 당신은 할 것 :

protected function getVisibility(isVisible as boolean) as string 
    if isVisible then 
    return "display:inline; " 
    else 
    return "display:none;" 
    end if 
end function 

를 이제, 당신은 asp.net 컨트롤에서 자바 스크립트 호출을 수행하기를 원한다면, 당신은뿐만 아니라 옵션이 있습니다 : 더 공단

<itemTemplate> 
    <asp:button runat="server" onclientClick="return confirm('click to submit');" 
       text="Click!" /> 
</itemTemplate> 

이 있습니다 : -

간단한 그러나 결코 최선의 선택으로는 인라인 JS를하는 것입니다 x 옵션을 사용하면 클릭 이벤트를 동적으로 캡처하고 선택할 리피터의 정확한 행을 결정할 수 있습니다. 이것의 한 예입니다

<itemTemplate> 
    <asp:button cssclass ='clickMe' runat="server" rel='<%# Eval("MyCol")%>' 
       text="Click!" /> 
</itemTemplate> 

그런 다음 jQuery 코드 :

$(".clickMe").click(function(){ 
    var myVal = $(this).attr("rel"); 
}) 
+0

신난다! 이미 HTML 버튼을 사용하고 있기 때문에 처음 아이디어가 마음에 들지만 :) ASP 버튼으로 전환해야하는 이유가 무엇입니까? – lhan

+0

ASP 버튼으로 전환하는 유일한 이유는 코드 숨김에서 로직을 처리하는 경우입니다. 그것은 사실이 아니기 때문에, 리피터의 각 버튼을 인스턴스화하는 작은 오버 헤드없이 실제로는 조금 더 빠르기 때문에 HTML 버튼을 사용합니다. –

+0

글쎄, 기술적으로, 나는 코드의 일부 처리를하고있다.두 개의 버튼으로 JQuery Ajax를 호출하고 (처음에는 사용자 정의 jquery 팝업을 표시 한 다음 선택에 따라 일부 처리 한 다음 다른 페이지로 가져갈 수 있습니다). 그 모든 것은 잘 작동하지만 3 번 단추를 추가하면 2 번을 표시하고 새 단추를 숨길 것입니다. 그 반대도 마찬가지입니다. 그렇다면 내가 어떻게 일을하고 있었는지에 대한 질문을 던지기 시작했습니다. 내 HTML 버튼을 그대로 두는 것이 도움이 될 것입니다. 감사합니다. – lhan

관련 문제