2012-03-14 4 views
1

AsyncPostBackTrigger의 EventName 특성에서 'EventName'asp.net이 예상하는 바가 무엇인지 파악하는 데 문제가 있습니다. (내가보고있는 방아쇠는 asp.net WebPart의 드래그 이벤트입니다. 그걸 기반으로 대답을 아는 사람이 있다면 위대합니다.)AsyncPostBackTrigger EventName - 어떻게 결정합니까?

__EVENTTARGET이 (는) 해당 컨트롤의 ID를 알려줘야합니다. 이벤트를 시작한 후 __EVENTARGUMENT이 (가) 이벤트 이름을 알려 주어야합니다.

트리거가되어야합니다 알아낼하려고, 난 다시 게시 페이지로드에 몇 가지 코드를 추가했습니다 :

Me.txtEventTarget.Value = Me.Page.Request.Params("__EVENTTARGET") 
Me.txtEventArg.Value = Me.Page.Request.Params("__EVENTARGUMENT") 

을 내가 다시 게시를 트리거하면, 다음과 같은 출력을 얻을 :

txtEventTarget :
ctl00 $ cphDataEntry $ ZONE2

txtEventArg :
드래그 : WebPart_gwpucMyFiles : 0

,536,

'이벤트 인수'는 실제로 이벤트의 이름, 이벤트를 트리거하는 컨트롤의 ID와 같은 모양 및 이벤트와 관련된 값의 세 부분으로 구성된 복합 개체입니다.

하지만 ASP.Net이 ID에 대해 수행하는 작업은 무엇입니까? 밑줄과 달러 기호가있는 짜증나는 일을하지만 왜이 두 변수에 다른 형식을 사용합니까? 둘 다 밑줄을 포함하면 안됩니까?

내 페이지의 html 소스를 볼 때 컨트롤 ID는 다음과 같이 보입니다. "ctl00_cphDataEntry_WebPartManager1_gwpucMyFiles". 하위 컨트롤의 ID가 고정됩니다. 나는이 때

어쨌든, 그것은 작동하지 않습니다 그래서

<Triggers> 
     <asp:AsyncPostBackTrigger ControlID="ctl00_cphDataEntry_WebPartManager1_gwpucMyFiles" EventName="Drag"/> 
</Triggers> 

을, 사람이 나는 AsynchronousPostbackTrigger에 넣어해야하는지 알고 있나요? EventName은 단순히 "끌기"입니까? 그렇다면 'ControlID'속성에 대한 내 컨트롤의 전체 ID가 필요합니까? 그렇다면 전체 ID를 어떻게 결정합니까? 달러 기호 형식이나 밑줄 형식이어야합니까?

답변

1

ControlID는 웹 서버 컨트롤의 ID 여야합니다. 당신이 당신의 ZoneTemplate 내부에 다음과 같은 마크 업이 있다고 : 당신 만 렌더링 된 HTML 당신이 부모 컨트롤의 사전 보류 ID를 볼 수에도 불구하고, AsynchronousPostbackTrigger에서 컨트롤의 controlid 속성에 대한 "MyWebPart1"을 필요

<uc1:MyWebPart ID="MyWebPart1" runat="server" /> 

을, "name"속성의 구분 기호로 달러 기호를 사용하고 "id"요소의 구분 기호로 밑줄을 사용합니다.

WebPart도 WebPartZone도 "끌기"이벤트를 노출하지 않지만 WebPartManager는 WebPartMoving 이벤트를 노출하므로 사용자가 원하는대로 처리 할 수 ​​있습니다. 이 시도 :

<Triggers> 
     <asp:AsyncPostBackTrigger ControlID="WebPartManager1" EventName="WebPartMoving" /> 
</Triggers> 

내가 그것을 유발하는 웹 부분이 이벤트를 처리하고 식별에 읽어하지만 적어도 부분 페이지 다시 게시 처음 작업을 얻을 수 있는지 확인하기 위해 당신을 떠날거야.

+0

대단히 감사합니다. 처음에 WebPartManager를 좀 더 연구 했어야 만했습니다.웹 파트가 움직이기 시작하면 WebPartMoving이 실행됩니다. 완료되면 WebPartMoved가 시작됩니다. – pabrams

관련 문제