2011-08-11 8 views
1

리피터에 바인딩 된 모든 항목에 대해 DevExpress ASPxGridView를 반복하는 리피터 컨트롤이 있습니다. repeater는 갱신 패널에 포함됩니다. 페이지의 이벤트 (UpdatePanel 외부)는 UpdatePanel (및 이후에 리피터)을 트리거하여 업데이트합니다. 리피터에 바인딩하기 위해 레코드가있는 경우 모두 올바르게 작동합니다. 리피터는 각 레코드에 그리드를 렌더링하고 모든 스타일이 완벽하게 보입니다.DevExpress 숨겨진 GridView CSS 문제

페이지가 처음로드되고 리피터에 표시 할 항목이없는 경우 그리드가 렌더링되지 않습니다 (이 시점까지 의도 한대로 작동 함). 레코드가 결국 추가되고 리피터가 리 바인드되면 (트리거 된 UpdatePanel로 인해) 그리드 스타일이 표시되지 않습니다. 전체 페이지를 새로 고치면 표 스타일이 완벽하게 표시됩니다. 그리드와 함께 제공되는 기본 스타일 중 하나를 사용하고 있기 때문에 AXD에서 가져와 내 MasterPage에는 포함되어 있지 않습니다.

조금 너무 많은 코드를 게시 할 수 있지만, 마크 업의 너트이 유사하게 나타납니다

<asp:UpdatePanel ID="the UpdatePanelInQuestion" runat="server" UpdateMode="Conditional"> 
    <asp:Repeater ID="theRepeaterInQuestion" runat="server" OnItemDataBound="theMethodThatHandlesGridPopulation"> 
    <ItemTemplate> 
     <dxwgv:ASPxGridView ID="theGridViewInQuestion" runat="server" EnableViewState="false"> 
     <Columns> 
     ... 
     </Columns> 
    </ItemTemplate> 
    </asp:Repeater> 
</asp:UpdatePanel> 

제대로 그리드 디스플레이의 스타일없이 만드는 방법에 대한 모든 아이디어 : 1) 새로 고침 전체 페이지를 트리거하는 대신 2) style = "display : none;"으로 페이지에 다른 빈 격자를 놓습니다. 강제로 스타일을 다운로드하십시오.

+1

UpdatePanel을 ASPxCallbackPanel로 변경하십시오. – vladimir77

답변

0

이 문제는 DX ASP.NET 컨트롤에 필요한 스크립트가 처음 페이지에 등록되지 않아서 발생합니다. 명시 적으로 DevExpress.Web.ASPxClasses.ASPxWebControl.RegisterBaseScript 메서드를 통해 등록 할 수 있습니다.

http://www.devexpress.com/issue=B191046 지원 센터 티켓을 확인하십시오.

+0

DevExpress 그리드를 Telerik RadGrid로 대체하고 명시 적으로 컨트롤을 등록 할 필요가 없기 때문에 실제로 이것을 시도하지 않았습니다. 그러나 이것은 원래 내가 찾고 있었던 것입니다. 미래의 사용을 위해 위대한 발견! – StevieG

+0

코멘트 주셔서 감사합니다. Telerik RadGrid에 대해 무엇을 말할 수 있습니까? 나는 아직 개발에 사용하지 않았다. – Mikhail