2011-07-29 4 views
3

사용자 정의 상호 작용에서 항목 -> 삽입 -> MyCommand를 마우스 오른쪽 단추로 클릭하는 데이터 정의 요리 책의 내용을 기반으로 몇 가지 간단한 명령을 작성했습니다. 간단한 명령 대화 상자에 "정말 이것을 수행 하시겠습니까?" . 훌륭합니다.사용자와 대화 대화를 위해 Sitecore ShowControlPopup을 사용하려면 어떻게해야합니까?

이제 대화 상자에서 사용자와 조금 더 상호 작용할 수있는 명령이 필요합니다. 사용자가 옵션을 선택한 다음 명령을 실행하기위한 버튼을 선택할 수 있도록 두 개의 라디오 버튼 목록을 추가해야합니다. 나는 이것을 위해 ShowControlPopup을 사용해야한다고 생각한다. 나는 popup이 어떻게 보이는지 정의하기 위해 (ascx) 컨트롤을 만들었고 Sitecore에서 기본 컨트롤로 작동하는지 테스트 버전을 발표했다. 그러나 ShowControlPopup 매개 변수가 정확히 무엇인지 확실하지 않습니다.

첫 번째 paratered는 "Id"이라고합니다. 여기에 무엇을 넣어야합니까? 팝업 컨트롤을 사용하는 항목의 ID?

두 번째 매개 변수는 "where"입니다. 팝업이 표시 될 URL을 추측합니다. 컨텐트 항목이 여기에 존재해야합니까? 아니면 단순히 가짜 URL입니까?

세 번째 매개 변수는 "controlId"입니다. 여기에 무엇을 넣어야합니까? 팝업을 정의하는 컨트롤의 ID를 시도했지만 컨트롤을 찾을 수 없다는 오류가 발생합니다.

사용자가 대화 상자에서 옵션을 선택하고 "ok"를 클릭하여 이벤트를 처리 할 때? 명령 클래스의 Run 메서드 또는 팝업 컨트롤의 코드 숨김에있는 이벤트 처리기?

이것은 지금까지 제 코드입니다. ID가 제공된 항목을 찾을 수 없다는 오류가있는 컨트롤을 만들려고 할 때 오류가 발생합니다. 팝업 컨트롤이 알고 싶어하는 항목을 추측했습니다.

protected void Run(Sitecore.Web.UI.Sheer.ClientPipelineArgs args) 
{ 
if (args.IsPostBack) 
{ 
    if (args.HasResult) 
    { // normally code here would run when the dialog box is completed by the user. Is that so in this case? 

    } 
} 
else 
{ 
    Sitecore.Context.ClientPage.ClientResponse.ShowControlPopup("F3684C4C-D9EF-4796-A471-5B05553119B6", 
       "http://mysite/dummy.aspx", 
       "B8D503D0-AEBE-43AE-B924-C3849F03E90D"); 

    args.WaitForPostBack(); 
} 
} 

건배,

제임스.

Sitecore 6.2 회전 091,012/Win7에 32 비트/IIS7/SQLExpress입니다 2008 (로컬 디바이스에서만은) 그냥 레코드에 대한

+0

처럼 보이는 결국 ... 내가 Sitecore 여러 번에 대해 불평했지만, 내가 어떤 업데이 트를보고 아직했습니다 뭔가. 아직 그렇게하지 않았다면이를위한 지원 요청을하는 것이 좋습니다. – Bryan

+0

Sheer 구성 요소를 구현하는 가장 쉬운 방법은 원하는 것에 가까운 기존 대화 상자를 찾은 다음 반사경을 사용하여 필요에 따라 복사 및 수정하는 것입니다. 예를 들어 실제 파일에서 '게시 설정'을 검색하여 게시 제한 대화 상자를 찾으십시오. XML 파일을 열고 'Codebeside'클래스를 찾으십시오. 그렇다면 리본에서 명령을 파고 전화가 어떻게 만들어 지는지의 문제. – dmgdotnet

+0

Bryan & dmgdotnet에게 감사드립니다. Sitecore를 통해 지원 사례를 열었습니다. 그들이 제공하는 유용한 답변을 올리겠습니다. Sitecore 코드를 살펴볼 것이지만 지금은 그 시간이 있는지 잘 모르겠습니다. 나올 수있는 여러 시나리오를 처리하기 위해 몇 가지 다른 명령을 작성할 수 있습니다. –

답변

4

, Sitecore 지원은 몇 가지 답변 돌아왔다

1) "이드"의 ID입니다 팝업되는 항목

2) "Where"는 "Id"와 관련된 위치입니다. 즉 위, 아래, 오른쪽 아래

3) "가 된 controlID"ShowPopupControl를 이용해 메인 메뉴와 컨텍스트 메뉴이다 Sitecore에서

로서는에게 팝업되는 항목의 ID이다.

또한 SheerUI는 아직 문서화되지 않았으므로 Sitecore 코드 기반에서 예제를 찾아 보라고했습니다. Sitecore 코드를 살펴볼 수는 있지만 대단히 좋습니다. 도코는 단순히 "ShowPopupControl 사용을 위해 UI 예제 x는 dll z의 클래스 y에서 찾을 수 있습니다"라고 말했습니다.

팝업팝업의 수명은 팝업의 코드 숨김 또는 명령 자체로 끝날 수 있습니다. 이는 최종 'args.WaitForPostBack()'에 따라 달라지며 'args.WaitForPostBack (true) or 'args.WaitForPostBack(false)'일 수도 있습니다.

결국 ShowModalDialog()는 사용자가 클릭 할 수있는 팝업이 아니기 때문에 실제로 원하는 것입니다.

그래서 내 코드는 깎아 지른듯한 UI 그냥 완전히 문서화되지 않은이

protected void Run(Sitecore.Web.UI.Sheer.ClientPipelineArgs args) 
{ 
    if (args.IsPostBack) 
    { 
     ;// we never come here becuase we have set waitforpostback to false. all processing is handled by the popup control 
    } 
    else 
    { 
     Sitecore.Text.UrlString popUpUrl = new Sitecore.Text.UrlString("/sitecore/content/MYSITE/MyControlPageItem.aspx"); 
     popUpUrl.Append("id", args.Parameters["id"]); 
     popUpUrl.Append("database", args.Parameters["database"]); 
     popUpUrl.Append("language", args.Parameters["language"]); 
     Sitecore.Context.ClientPage.ClientResponse.ShowModalDialog(popUpUrl.ToString(),"400", "600", "", true); 

     args.WaitForPostBack(false); // if this is true this command will wait for the modal dialog created above to close 
             // at which time the Run method will check for postback & args 
    } 
} 
관련 문제