2012-02-17 4 views
0

내 웹 파트 (SharePoint 2010)의 javascript 함수에서 SP.UI.ModalDialog.showModalDialog()를 호출하지만 대화 상자가 1 초 동안 표시된 다음 닫힙니다.
원래 (레이아웃 폴더에서) 셰어 포인트 페이지를 호출하고 싶었지만 단순한 대화 상자를 사용하여 내 셰어 포인트 페이지에 오류가 없는지 테스트하고 있습니다.SharePoint 웹 파트에서 ModalDialog를 닫을 수 없습니다.

웹 파트에는 각 첫 번째 셀 행이 LinkButton 인 테이블이 있습니다. 나는 자바 스크립트 함수를 호출하는 OnClientClick을 설정 한 : 웹 파트 ASCX의 스크립트 블록에서

linkButton.OnClientClick = string.Format("OpenNotationCurveDialog('{0}');", 
        notation.code); 

을, 내가 가진 :

function OpenNotationCurveDialog(notationCode) { 

    var htmlElement = document.createElement('p'); 

    var helloWorldNode = document.createTextNode('Hello world!'); 
    htmlElement.appendChild(helloWorldNode); 

    var options = { 

     title: "Add item", 
     allowMaximize: true, 
     showClose: true, 
     width: 800, 
     height: 600, 
     html: htmlElement, 
     dialogReturnValueCallback: CurveDialog_ClosedCallback 

    }; 

    SP.UI.ModalDialog.showModalDialog(options); 

    return false; 
} 

function CurveDialog_ClosedCallback(result, value) { 
    console.log('!! CurveDialog_ClosedCallback !!'); 
} 

함수 CurveDialog_ClosedCallback가 호출되지 않습니다. 동일한 웹 파트에서 자바 스크립트 함수 SP.UI.ModalDialog.showModalDialog()를 호출하는 요소를 웹 파트 메뉴에 추가했습니다. 완벽하게 작동합니다. 메뉴에서 showModalDialog()를 호출하고 LinkButton 클라이언트 이벤트에서 작업하지 않을 때 왜 작동하는지 이해할 수 없습니다.

어떤 생각을 어떻게하면이 성가신 행동을 해결할 수 있습니까? thx

답변

1

아마도 linkbutton이 페이지가 다시로드되어 대화 상자가 사라질 수 있도록 다시 게시를 수행합니다. 대신 간단한 앵커 태그를 사용해보십시오.

+0

나는 똑같은 생각을 가지고있다 : 간단한 앵커 태그로 잘 동작한다. 당신은 클라이언트 이벤트를 설정하기 위해 LinkButton을 대체 할 수있는 asp 컨트롤을 알고 있습니까? 사용자가 asp : table 셀을 클릭 할 때 javascript 함수를 호출해야합니다. – Dino

+0

정말로 서버 측에서 작업해야하는 경우에는 항상 앵커 태그를 runat = "server"로 선언하고 HtmlAnchor (http://msdn.microsoft.com/en-us/library/8ff86hxd(v)로 작업하십시오. = vs.71) .aspx). 그러나, 순수하게 클라이언트 쪽에서 전화를 걸기가 쉽고, jquery 또는 유사한 것을 사용하여 연결을 설정하는 것이 더 쉬울 것 같습니다. 서버 측에 갈 필요가있는 이유가 있습니까? –

+0

예 (셀도 마찬가지) 행이 서버 측에서 작성 되었기 때문에 가능합니다. – Dino

관련 문제