Пример #1
0
        public override object LayoutControls(IModelNode layoutInfo, ViewItemsCollection detailViewItems)
        {
            var splitLayout = layoutInfo as IModelSplitLayout;

            if (IsMasterDetail(layoutInfo, detailViewItems, splitLayout))
            {
                _detailViewItems = detailViewItems;

                IListControlAdapter adapter = GetListControlAdapter((Control)detailViewItems[0].Control);
                if (adapter != null)
                {
                    var          detailControl = (Control)detailViewItems[1].Control;
                    ASPxSplitter splitter      = LayoutMasterDetail(detailControl, adapter, splitLayout);
                    var          viewItem      = detailViewItems[0] as ListEditorViewItem;

                    var listEditor = viewItem?.ListEditor as IXpandListEditor;
                    if (listEditor != null)
                    {
                        listEditor.ViewControlsCreated += (s, e) => SetSplitterInitClientEvent(splitter, e.IsRoot);
                    }

                    RaiseMasterDetailLayout(new MasterDetailLayoutEventArgs {
                        MasterViewItem  = detailViewItems[0],
                        DetailViewItem  = detailViewItems[1],
                        SplitterControl = splitter
                    });

                    return(splitter);
                }
                throw new NotImplementedException(detailViewItems[0].Control.ToString());
            }
            return(base.LayoutControls(layoutInfo, detailViewItems));
        }
Пример #2
0
        ASPxSplitter LayoutMasterDetail(Control detailControl, IListControlAdapter adapter, IModelSplitLayout splitLayout)
        {
            ASPxSplitter splitter = CreateSplitter(splitLayout, adapter);
            var          listPane = CreateSplitterListPane(splitter);

            listPane.Controls.Add(adapter.Control);

            var callbackPanel = CreateSplitterDetailPane(splitter);

            callbackPanel.Controls.Add(detailControl);
            return(splitter);
        }
Пример #3
0
        private ASPxSplitter CreateSplitter(IModelSplitLayout splitLayout, IListControlAdapter adapter)
        {
            var splitter = new ASPxSplitter {
                ID          = "MasterDetailSplitter",
                Orientation =
                    (splitLayout.Direction == FlowDirection.Horizontal)
                        ? Orientation.Horizontal
                        : Orientation.Vertical,
                ShowCollapseBackwardButton = true,
                ShowCollapseForwardButton  = true
            };

            splitter.ClientSideEvents.PaneResized = GetPaneResizedEventScript(adapter);
            return(splitter);
        }
Пример #4
0
 private string GetPaneResizedEventScript(IListControlAdapter adapter)
 {
     return(string.Format(CultureInfo.InvariantCulture,
                          "function (s,e) {{ if (e.pane.name==='listPane') {{ {0};s.xpandInitialized  = true; }}}}",
                          adapter.CreateSetBoundsScript("e.pane.GetClientWidth()", "e.pane.GetClientHeight()")));
 }
Пример #5
0
        private ASPxSplitter CreateSplitter(IModelSplitLayout splitLayout, IListControlAdapter adapter) {
            var splitter = new ASPxSplitter {
                ID = "MasterDetailSplitter",
                Orientation =
                    (splitLayout.Direction == FlowDirection.Horizontal)
                        ? Orientation.Horizontal
                        : Orientation.Vertical,
                ShowCollapseBackwardButton = true,
                ShowCollapseForwardButton = true
            };

            splitter.ClientSideEvents.PaneResized = GetPaneResizedEventScript(adapter);
            return splitter;
        }
Пример #6
0
 private string GetPaneResizedEventScript(IListControlAdapter adapter) {
     return string.Format(CultureInfo.InvariantCulture,
                          "function (s,e) {{ if (e.pane.name==='listPane') {{ {0};s.xpandInitialized  = true; }}}}",
                           adapter.CreateSetBoundsScript("e.pane.GetClientWidth()", "e.pane.GetClientHeight()"));
 }
Пример #7
0
        ASPxSplitter LayoutMasterDetail(Control detailControl, IListControlAdapter adapter, IModelSplitLayout splitLayout) {
            ASPxSplitter splitter = CreateSplitter(splitLayout, adapter);
            var listPane = CreateSplitterListPane(splitter);
            listPane.Controls.Add(adapter.Control);

            var callbackPanel = CreateSplitterDetailPane(splitter);
            callbackPanel.Controls.Add(detailControl);
            return splitter;
        }