public static void SetMenuState(this IChildMdiForm menuWindow) { if (menuWindow == null) { return; } IList <IButton> tsbs = menuWindow.GetCustomProperty(s_windowMenuButtonName) as IList <IButton>; if (tsbs != null) { IControlManagerContainer cmContainer = menuWindow as IControlManagerContainer; if (cmContainer != null) { if (cmContainer != null && cmContainer.ControlManager != null) { foreach (IButton tsb in tsbs) { SetTsbState(tsb, cmContainer.ControlManager); } } } else { IDisplayManagerContainer dmContainer = menuWindow as IDisplayManagerContainer; if (dmContainer != null && dmContainer.DisplayManager != null) { foreach (IButton tsb in tsbs) { SetTsbState(tsb, dmContainer.DisplayManager); } } } } }
internal static void OnButtonClick(WindowMenuInfo windowMenuInfo, System.Windows.Forms.Form parentForm) { IArchiveDetailFormWithDetailGrids addg = parentForm as IArchiveDetailFormWithDetailGrids; if (addg != null) { foreach (IBoundGrid i in addg.DetailGrids) { MyGrid.CancelEditCurrentDataRow(i); } } IGridContainer agf = parentForm as IGridContainer; if (agf != null) { MyGrid.CancelEditCurrentDataRow(agf.MasterGrid); } IControlManagerContainer cmc = parentForm as IControlManagerContainer; if (cmc != null) { InternalExecuteWindowMenu(cmc.ControlManager, windowMenuInfo, parentForm); } else { IDisplayManagerContainer dmc = parentForm as IDisplayManagerContainer; if (dmc != null) { InternalExecuteWindowMenu(dmc.DisplayManager, windowMenuInfo, parentForm); //InternalExecuteWindowMenu((parentForm as ArchiveDetailForm).ParentArchiveForm, windowMenuInfo); } } }
internal static void ShowFrom(string actionId, ISearchExpression se, bool asDetailDialog) { IDisplayManagerContainer seeForm = null; ArchiveDetailForm detailForm = null; ISearchManager sm = null; if (!asDetailDialog) { seeForm = (ServiceProvider.GetService <IApplication>() as IWinFormApplication).ExecuteAction(actionId) as IDisplayManagerContainer; if (seeForm == null) { throw new InvalidOperationException("未能创建目标窗体!"); } sm = seeForm.DisplayManager.SearchManager; } else { //detailForm = Feng.Utils.ReflectionHelper.CreateInstanceFromType(Feng.Utils.ReflectionHelper.GetTypeFromName(info.ToDetailForm)) as ArchiveDetailForm; //if (detailForm == null) //{ // MessageForm.ShowError("未能创建目标窗体!"); // return; //} //detailForm.UpdateContent(); //findWindow = detailForm.DisplayManager.SearchManager; } if (sm == null) { throw new InvalidOperationException("未能找到目标窗体的查找窗口!"); } //List<ISearchExpression> findList = new List<ISearchExpression>(); //ISearchExpression findCondition = GetAndFindCondition(selected, 0, toColumns); //for (int i = 1; i < selected[0].Count; ++i) //{ // findCondition = new LogicalExpression(findCondition, GetAndFindCondition(selected, i, toColumns), LogicalOperator.Or); //} //findList.Add(findCondition); sm.LoadData(se, null); if (asDetailDialog) { if (detailForm.ControlManager.DisplayManager.Count == 0) { ServiceProvider.GetService <IMessageBox>().ShowWarning("未能找到相应记录!"); return; } detailForm.ControlManager.DisplayManager.Position = 0; detailForm.ShowDialog(); detailForm.Dispose(); } }
void GridGotoDetailFormToolStripItem_DropDownOpened(object sender, EventArgs e) { IDisplayManagerContainer parentForm = this.Parent.FindForm() as IDisplayManagerContainer; if (parentForm != null) { object entity = parentForm.DisplayManager.Position == -1 ? null : parentForm.DisplayManager.CurrentItem; foreach (ToolStripItem item in this.DropDownItems) { GridRelatedInfo info = item.Tag as GridRelatedInfo; item.Visible = Permission.AuthorizeByRule(info.Visible, entity); } } }
internal static Tuple <string, object> GetDataCellValue(string s2, Xceed.Grid.Cell cell) { string s1 = s2; // maybe there is '.' int idx = s1.IndexOf('_'); string dataControlName, propertyName; if (idx == -1) { dataControlName = s1; propertyName = null; } else { dataControlName = s1.Substring(0, idx); propertyName = s1.Substring(idx + 1); } object o = null; if (cell.ParentRow.Cells[dataControlName] != null) { o = cell.ParentRow.Cells[dataControlName].Value; } else { // 如果未找到Cell,则找父级DataControl IDisplayManagerContainer form = cell.GridControl.FindForm() as IDisplayManagerContainer; if (form != null) { IDataControl parentDc = form.DisplayManager.DataControls[dataControlName]; o = parentDc.SelectedDataValue; } } if (!string.IsNullOrEmpty(propertyName)) { propertyName = propertyName.Replace('_', '.'); o = EntityScript.GetPropertyValue(o, propertyName); } //if (o == null) //{ // throw new ArgumentException("there is no column or datacontrol with name " + s1 + "!"); //} return(new Tuple <string, object>(dataControlName, o)); }
private static void DisplayManager_PositionChanged(this IDisplayManagerContainer dmContainer, object sender, EventArgs e) { IDisplayManager dm = sender as IDisplayManager; if (dm == dmContainer.DisplayManager) { SetMenuState(dmContainer as IChildMdiForm); } //if (this.ArchiveDetailForm != null && dm == this.ArchiveDetailForm.DisplayManager) //{ // foreach (IButton tsb in m_tsbsDetail) // { // SetTsbState(tsb, this.ArchiveDetailForm.DisplayManager); // } //} }
public static void DisposeWindowMenu(this IChildMdiForm menuWindow) { IList <IButton> tsbs = menuWindow.GetCustomProperty(s_windowMenuButtonName) as IList <IButton>; if (tsbs != null) { foreach (IButton tsb in tsbs) { tsb.Click -= new EventHandler(tsb_Click); } tsbs.Clear(); } ToolStrip toolStrip = menuWindow.GetCustomProperty("WindowMenuGeneratedToolStrip") as ToolStrip; if (toolStrip != null) { menuWindow.RevertMergeToolStrip(toolStrip); } IControlManagerContainer cmContainer = menuWindow as IControlManagerContainer; if (cmContainer != null && cmContainer.ControlManager != null) { cmContainer.ControlManager.DisplayManager.PositionChanged -= new EventHandler(cmContainer.ControlManager_PositionChanged); cmContainer.ControlManager.EditEnded -= new EventHandler(cmContainer.ControlManager_EditEnded); cmContainer.ControlManager.StateChanged -= new EventHandler(cmContainer.ControlManager_StateChanged); } else { IDisplayManagerContainer dmContainer = menuWindow as IDisplayManagerContainer; if (dmContainer != null && dmContainer.DisplayManager != null) { dmContainer.DisplayManager.PositionChanged -= new EventHandler(dmContainer.DisplayManager_PositionChanged); } } }
public static void GenerateWindowMenu(this IChildMdiForm menuWindow, IList <WindowMenuInfo> windowMenuInfos) { // WindowMenu if (windowMenuInfos != null && windowMenuInfos.Count > 0) { IList <IButton> tsbs = new List <IButton>(); ToolStrip toolStripDetail = GenerateWindowMenu(windowMenuInfos, tsbs, GetExistToolStripItems(menuWindow.ToolStrip)); menuWindow.MergeToolStrip(toolStripDetail); menuWindow.SetCustomProperty(s_windowMenuButtonName, tsbs); menuWindow.SetCustomProperty("WindowMenuGeneratedToolStrip", toolStripDetail); IControlManagerContainer cmContainer = menuWindow as IControlManagerContainer; if (cmContainer != null && cmContainer.ControlManager != null) { cmContainer.ControlManager.DisplayManager.PositionChanged -= new EventHandler(cmContainer.ControlManager_PositionChanged); cmContainer.ControlManager.EditEnded -= new EventHandler(cmContainer.ControlManager_EditEnded); cmContainer.ControlManager.StateChanged -= new EventHandler(cmContainer.ControlManager_StateChanged); cmContainer.ControlManager.DisplayManager.PositionChanged += new EventHandler(cmContainer.ControlManager_PositionChanged); cmContainer.ControlManager.EditEnded += new EventHandler(cmContainer.ControlManager_EditEnded); cmContainer.ControlManager.StateChanged += new EventHandler(cmContainer.ControlManager_StateChanged); } else { IDisplayManagerContainer dmContainer = menuWindow as IDisplayManagerContainer; if (dmContainer != null && dmContainer.DisplayManager != null) { // only one. DetailWindow.DisplayManager = MasterWindow.DisplayManager. 当时也可能不一致,-=无效。 // // 可能和MasterWindow不是同一个ControlManager dmContainer.DisplayManager.PositionChanged -= new EventHandler(dmContainer.DisplayManager_PositionChanged); dmContainer.DisplayManager.PositionChanged += new EventHandler(dmContainer.DisplayManager_PositionChanged); } } } }
/// <summary> /// 按照自定义规则按照地址导航程序到某个界面 /// http://cd/{action}/exp={exp}&order={order}&pos={pos} /// http://cd/action/查询统计_人员单位/?exp=编号 = 100000&order=编号&pos=1 /// </summary> /// <param name="app"></param> /// <param name="address"></param> public static void NavigateTo(this IApplication app, string address) { if (string.IsNullOrEmpty(address) || !address.StartsWith(s_addressHeader)) { return; } string content = address.Substring(s_addressHeader.Length); if (!content.Contains("action/")) { content = Decrypt(content); address = s_addressHeader + content; } UriTemplate template = new UriTemplate("action/{action}/?exp={exp}&order={order}&pos={pos}"); Uri baseAddress = new Uri(s_addressHeader + SystemConfiguration.ApplicationName); Uri fullUri = new Uri(address); // Match a URI to a template UriTemplateMatch results = template.Match(baseAddress, fullUri); if (results != null && results.BaseUri == baseAddress) { try { IDisplayManagerContainer dmC = app.ExecuteAction(results.BoundVariables["action"]) as IDisplayManagerContainer; if (dmC == null) { return; } if (dmC.DisplayManager != null && dmC.DisplayManager.SearchManager != null) { var t = results.BoundVariables["first"]; if (t != null) { int?first = Feng.Utils.ConvertHelper.ToInt(t); if (first.HasValue) { dmC.DisplayManager.SearchManager.FirstResult = first.Value; } } t = results.BoundVariables["count"]; if (t != null) { int?count = Feng.Utils.ConvertHelper.ToInt(t); if (count.HasValue) { dmC.DisplayManager.SearchManager.MaxResult = count.Value; } } t = results.BoundVariables["exp"]; if (t != null) { var exp = SearchExpression.Parse(t); var order = SearchOrder.Parse(results.BoundVariables["order"]); if (exp != null) { dmC.DisplayManager.SearchManager.LoadData(exp, order); dmC.DisplayManager.Position = 0; } } } } catch (Exception ex) { ExceptionProcess.ProcessWithNotify(ex); } } }
/// <summary> /// ShowArchiveDetailForm /// </summary> /// <param name="detailForm"></param> public void ShowArchiveDetailForm() { IArchiveDetailForm detailForm = this.ArchiveDetailForm; Form form = detailForm as Form; if (form == null) { return; } // 需要变换DetailForm状态 //if (form.Visible) //{ // return; //} //TabbedMdiForm mdiForm = TabbedMdiForm.GetMainForm(); //if (mdiForm != null) { form.Text = this.Text + "_详细"; //// show in mdi //mdiForm.AddFormToGroup(form, 1); //form.InvisibleOnClosing = true; form.FormBorderStyle = FormBorderStyle.None; form.TopLevel = false; form.Dock = DockStyle.Fill; this.splitContainer1.Panel2.Controls.Add(form); // 如果是最大化,里面的控件不能随着Panel2大小改变而改变 //form.WindowState = FormWindowState.Maximized; // 在还没Show之前,SplitterDistance是按照原大小来的,此时改变窗体大小,SplitterDistance会按比例改变。 // 所以应该先改变大小,再读入SplitterDistance form.Size = new Size(this.Width, this.Height - this.splitContainer1.SplitterDistance); this.splitContainer1.Panel2Collapsed = false; if (detailForm.MenuStrip != null) { detailForm.MenuStrip.Visible = false; } } //else //{ // form.TopLevel = true; //} form.VisibleChanged -= new EventHandler(detailForm_VisibleChanged); form.VisibleChanged += new EventHandler(detailForm_VisibleChanged); form.Show(); detailForm.UpdateContent(); //if (detailForm is ArchiveDetailForm) //{ // (detailForm as ArchiveDetailForm).UpdateContent(); //} //else if (detailForm is ArchiveSeeForm) //{ // (detailForm as ArchiveSeeForm).UpdateContent(); //} // 如果DisplayManager是BindingSource类型的,如果Cancel会导致 PositionChanged,所以只能Disable Grid // && form.ControlManager != null // && (form.ControlManager.State == StateType.Add || form.ControlManager.State == StateType.Edit) // 还不是很好,有问题。Todo IDisplayManagerContainer dmc = detailForm as IDisplayManagerContainer; if (this.MasterGrid != null && dmc != null && dmc.DisplayManager == this.DisplayManager) { this.MasterGrid.ReadOnly = true; } }