private void CustomizeASPxTabControl(ASPxTabControlBase tabControl) { ASPxPageControl pagecontrol = tabControl as ASPxPageControl; if (pagecontrol != null) { foreach (TabPage page in pagecontrol.TabPages) { string propertyname = page.Name; if (propertyname.Contains("_Group")) { propertyname = propertyname.Substring(0, propertyname.IndexOf("_Group")); } MemberInfo[] members = this.View.CurrentObject.GetType().GetMember(propertyname); if (members.Length > 0) { object obj = XafTypesInfo.Instance.FindTypeInfo(this.View.CurrentObject.GetType()).FindMember(propertyname).GetValue(this.View.CurrentObject); if (obj is ICollection) { if ((obj as ICollection).Count > 0) { page.Text = String.Format("{0} ({1})", this.View.FindItem(propertyname).Caption, (obj as ICollection).Count); page.TabStyle.Font.Bold = HighlightOptions.BoldTabsWithCounts; } } else if (obj != null) { page.TabStyle.Font.Bold = HighlightOptions.BoldTabsWithCounts; } } } } }
/// <summary> /// 执行页面的切换 /// </summary> /// <param name="pageControl"></param> /// <param name="controls"></param> /// <param name="switchHandle"></param> public static void Switch <T>( this ASPxTabControlBase tabs, T[] controls, Action <int, T> switchHandle = null, Action <int, T> unloadHandle = null, int activeIndex = 0) where T : Control { // 加载中提示.. tabs.ClientSideEvents.TabClick = "function(s,e){ISEx.loadingPanel.show();}"; if (tabs is ASPxPageControl) { if (tabs.As <ASPxPageControl>().TabPages.Count != controls.Length) { throw new ArgumentException("Controls count not matched with tab count.", "controls"); } } if (tabs is ASPxTabControl) { if (tabs.As <ASPxTabControl>().Tabs.Count != controls.Length) { throw new ArgumentException("Controls count not matched with tab count.", "controls"); } } foreach (var c in controls) { c.Visible = false; } tabs.TabClick += (s, e) => { for (int i = 0; i < controls.Length; i++) { if (e.Tab.Index != i && unloadHandle != null) { unloadHandle(i, controls[i]); } controls[i].Visible = false; } controls[e.Tab.Index].Visible = true; if (switchHandle != null) { switchHandle(e.Tab.Index, controls[e.Tab.Index]); } }; if (activeIndex < 0 || activeIndex >= controls.Length) { return; } tabs.ActiveTabIndex = activeIndex; controls[activeIndex].Visible = true; }
private void TemplateContainer_Load(object sender, EventArgs e) { Control c = (Control)sender; c.Load -= TemplateContainer_Load; ASPxTabControlBase tabcontrol = FindFirstControl <ASPxTabControlBase>(c); if (tabcontrol != null) { tabControls.Add(tabcontrol); CustomizeASPxTabControl(tabcontrol); } }