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)); }
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); }
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); }
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()"))); }
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; }
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()")); }
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; }