내 웹 파트 (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
나는 똑같은 생각을 가지고있다 : 간단한 앵커 태그로 잘 동작한다. 당신은 클라이언트 이벤트를 설정하기 위해 LinkButton을 대체 할 수있는 asp 컨트롤을 알고 있습니까? 사용자가 asp : table 셀을 클릭 할 때 javascript 함수를 호출해야합니다. – Dino
정말로 서버 측에서 작업해야하는 경우에는 항상 앵커 태그를 runat = "server"로 선언하고 HtmlAnchor (http://msdn.microsoft.com/en-us/library/8ff86hxd(v)로 작업하십시오. = vs.71) .aspx). 그러나, 순수하게 클라이언트 쪽에서 전화를 걸기가 쉽고, jquery 또는 유사한 것을 사용하여 연결을 설정하는 것이 더 쉬울 것 같습니다. 서버 측에 갈 필요가있는 이유가 있습니까? –
예 (셀도 마찬가지) 행이 서버 측에서 작성 되었기 때문에 가능합니다. – Dino