문제

나는 ListViewByQuery 사용자 지정 웹 파트에서.CAML을 설정하면 GroupBy 에게 <GroupBy Collapse='FALSE'> (즉.확장됨) 웹파트가 제대로 작동합니다.그러나 내가 설정하면 <GroupBy Collapse='TRUE'>, 항목이 확장되지만 "작업 중..." 메시지가 표시되면서 멈춥니다.

enter image description here

(SharePoint 2010의 이전 메시지는 "로드 중..."이었던 것 같습니다.)

사전 확장된 작업 복사본은 다음과 같습니다.

enter image description here

이는 JavaScript 문제가 아닌 것 같습니다(여러 브라우저에서 테스트됨).

이 문제를 어떻게 해결합니까?


곁에:Karine은 다음을 사용하여 자신의 블로그에서 매우 유사한 문제를 언급합니다. ListViewByQuery 웹 파트 여기.제안된 JavaScript 수정 사항을 테스트하고 다시 보고하겠지만 이는 단지 해결 방법일 뿐이라고 생각합니다. 근본적인 원인과 해결책은 무엇입니까?

업데이트:JS 수정 프로그램이 작동하지 않습니다.동적으로 생성 중입니다. ListViewByQuery 내 사용자 지정 웹 파트에서 제어하고(필요한 것처럼 보임) JS가 실행되는 것처럼 보이지만 디버깅 방법을 결정할 수 없습니다.

업데이트 2:마침내 JS 수정 사항이 작동하게 되었습니다. 축소가 두 번 호출되었습니다(그래서 jsut가 다시 확장됩니다).곧 가능한 답변으로 제안할 예정이지만 실제 답변으로 받아들이지는 않습니다.

도움이 되었습니까?

해결책

이것이 바로 JavaScript 수정/kludge가 작동하는 방법입니다.먼저, 미리 확장해야 합니다. ListViewByQuery CAML 그룹(Collapse='FALSE').둘째, 제안된 JavaScript는 두 번 실행되고 단순히 결과가 축소/확장되므로 2013에서는 작동하지 않는 것 같습니다.제가 작업한 방법은 다음과 같습니다.

나는 ListViewByQuery 동적으로 제어합니다(doco에서 필요/권장).

Panel pnlDiv = new Panel();
pnlDiv.ID = "pnlDiv";
pnlDiv.CssClass = "ms-authoringcontrols";

ListViewByQuery lvPdfs = new ListViewByQuery();

..

EnsureChildControls();

pnlDiv.Controls.Add(lvPdfs);
pnlDiv.RenderControl(writer);
RenderChildren(writer);

JavaScript에 문제가 있어서 서버 측에서 내보냈습니다.

        private void RegisterExpandJavascriptFix()
        {
            ClientScriptManager cs = Page.ClientScript;

            if (!cs.IsClientScriptBlockRegistered(this.GetType(), "CollapseFunc"))
            {
                cs.RegisterClientScriptBlock(this.GetType(), "CollapseFunc", JSExpandFix, true);
            }

            if (!cs.IsStartupScriptRegistered(this.GetType(), "Collapse"))
            {
                cs.RegisterStartupScript(this.GetType(), "CollapseFunc", "collapseDiv();", true);
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                RegisterExpandJavascriptFix();
            }
        }

JavaScript는 다음과 같습니다.

private const string JSExpandFix = @"function collapseDiv() {                                                    
                                                    var div = document.getElementById('pnlDiv');
                                                    //alert(div);
                                                    if (div != null) {
                                                        var links = div.getElementsByTagName('a');
                                                        for (var i = 0; i < links.length; i++) {
                                                            if (links[i].href == 'javascript:' && links[i].onclick.toString().indexOf('ExpCollGroup') > -1 && links[i].previousSibling.tagName == 'IMG') {                                                                
                                                                //alert(links[i].onclick.toString());                    
                                                                links[i].click();
                                                            }
                                                        }
                                                    }
                                                }";   

참고하세요 links[i].previousSibling.tagName == 'IMG') 확인 - 이것은 단지 클릭만 되는지 확인하는 방법입니다. 첫 번째 링크 접기(예:텍스트가 아닌 플러스/마이너스 이미지).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top