private void SetMetro(MENUTABLE menuTable, HtmlTextWriter writer, ref int iColor) { String bgColor = menuTable.VERSIONNO; if (String.IsNullOrEmpty(bgColor)) { String[] bgColors = { "orange", "purple", "greenDark", "blue", "red", "green", "blueDark", "yellow", "pink", "darken", "gray", "grayLight" }; //bgColor = bgColors[Guid.NewGuid().ToByteArray()[0] % 12]; if (iColor >= bgColors.Length) iColor = 0; bgColor = bgColors[iColor++]; } String menuClass = String.Format("tile {0} image bg-color-{1}", getSize(menuTable), bgColor); menuClass = SetFMenuClassForMobileGrid(menuClass, menuTable); writer.AddAttribute(HtmlTextWriterAttribute.Class, menuClass); String formName = String.Empty; if (!String.IsNullOrEmpty(menuTable.FORM)) formName = "/" + menuTable.FORM + ".aspx"; if (!String.IsNullOrEmpty(menuTable.PACKAGE) && !String.IsNullOrEmpty(formName)) { //href='" + url + "' data-transition='slide' rel='external' if (!IsForCloud) { if (SubFolder) writer.AddAttribute(HtmlTextWriterAttribute.Href, "../" + menuTable.PACKAGE + formName + "?" + menuTable.ITEMPARAM); else writer.AddAttribute(HtmlTextWriterAttribute.Href, menuTable.PACKAGE + formName + "?" + menuTable.ITEMPARAM); } else { writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0);"); writer.AddAttribute(HtmlTextWriterAttribute.Onclick, String.Format("openForm({{MODULETYPE:'{0}', FORM:'{1}', MENUID:'{2}', CAPTION:'{3}'}})", menuTable.MODULETYPE, menuTable.FORM, menuTable.MENUID, menuTable.CAPTION)); } writer.AddAttribute("data-transition", "slide"); writer.AddAttribute(HtmlTextWriterAttribute.Rel, "external"); } writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("Menu{0}", menuTable.MENUID)); writer.RenderBeginTag(HtmlTextWriterTag.A); if (menuTable.ISSERVER != null && menuTable.ISSERVER.ToString() != "N" && menuTable.ISSERVER != "I" && menuTable.ISSERVER != "T") { #region metro作为控件使用在页面呈现其他类型时候 if (menuTable.OWNER != null && menuTable.OWNER != "") { var control = this.Page.FindControl(menuTable.OWNER); if (control != null) { if (menuTable.ISSERVER == "G") { control.Visible = true; //control.RenderControl(writer); var grid = control as JQDataGrid; var gridClass = JQClass.DataGrid; var gridTheme = grid.Theme; if (grid.GridViewType == JQMobileTools.GridViewType.List) { gridClass += " " + JQClass.DataList; } writer.AddAttribute(HtmlTextWriterAttribute.Class, gridClass + " table-stripe infolight-breakpoint"); writer.AddAttribute(JQProperty.DataRole, JQDataRole.Table); writer.AddAttribute(JQProperty.DataMode, JQDataMode.Reflow); if (!string.IsNullOrEmpty(gridTheme)) { writer.AddAttribute(JQProperty.DataTheme, gridTheme); } writer.AddAttribute(JQProperty.DataOptions, grid.DataOptions); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Thead); writer.RenderBeginTag(HtmlTextWriterTag.Tr); foreach (var column in grid.Columns) { if (column.Visible) column.Render(writer); } writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); JQScriptManager.RenderPopup(writer, string.Format("{0}_popup", ID)); if (grid.ToolItems.Count > 0) { writer.AddAttribute(HtmlTextWriterAttribute.Id, grid.ToolItemObjectID); writer.AddAttribute(HtmlTextWriterAttribute.Style, "display:none"); writer.AddAttribute(JQProperty.DataRole, JQDataRole.None); writer.RenderBeginTag(HtmlTextWriterTag.Div); foreach (var item in grid.ToolItems) { item.Render(writer); } writer.RenderEndTag(); } control.Visible = false; } else if (menuTable.ISSERVER == "C" || menuTable.ISSERVER == "D") { writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ID + "_" + control.ID); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.RenderEndTag();//div System.Reflection.PropertyInfo p = control.GetType().GetProperty("RenderObjectID"); if (p != null) { p.SetValue(control, this.ID + "_" + control.ID, null); } } } } #endregion } else { #region metro 呈现MenuTable资料 if (menuTable.ISSERVER == "I" || menuTable.ISSERVER == "T") { var control2 = this.Page.FindControl(menuTable.OWNER); if (control2 != null && control2.GetType() == typeof(JQRotator)) { (control2 as JQRotator).MenuID = menuTable.MENUID; } } if (!String.IsNullOrEmpty(menuTable.IMAGEURL)) { var initialDir = string.Format("Image/MenuTree/Metro_{0}", menuTable.IMAGEURL); if (SubFolder) initialDir = "../" + initialDir; writer.AddAttribute(HtmlTextWriterAttribute.Src, initialDir); writer.RenderBeginTag(HtmlTextWriterTag.Img); writer.RenderEndTag();//Img } writer.AddAttribute(HtmlTextWriterAttribute.Class, "textover-wrapper transparent"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("Menu{0}DIVtext", menuTable.MENUID)); writer.AddAttribute(HtmlTextWriterAttribute.Class, "text2"); var title = getCaption(menuTable); writer.AddAttribute(HtmlTextWriterAttribute.Title, title); writer.AddAttribute(HtmlTextWriterAttribute.Style, "color: white"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(title); writer.RenderEndTag();//Div text2 writer.RenderEndTag();//Div textover-wrapper bg-color-blueDark #endregion } writer.RenderEndTag();//A tile wide imagetext wideimage bg-color-blue foreach (MENUTABLE v in menuTable.MENUTABLE1) { SetMetro(v, writer, ref iColor); } }
private void btnOK_Click(object sender, EventArgs e) { //new add by ccm if (txtCaption.Text == string.Empty) { MessageBox.Show("Caption can't be null"); return; } //add by ccm to solve the problem of set the childnode as parent for (int i = 0; i < MenuIDList.Count; i++) { if (MenuIDList[i].ToString() == txtParent.Text.Trim()) { if (ParentList[i].ToString() == txtMenuID.Text.Trim()) { MessageBox.Show("Can not set the childnode as parent"); return; } } } EnableControl(false); //btnReloadTree.Enabled = true; tView.Enabled = true; infoCmbSolution.Enabled = true; this.cbLanguageID.Enabled = true; //object[] strAddParam = new object[13]; MENUTABLE aMENUTABLE = new MENUTABLE(); if (optype == OpType.modify) { aMENUTABLE = (MENUTABLE)curNode.Tag; } //new add by ccm aMENUTABLE.MENUID = (txtMenuID.Text == string.Empty) ? null : txtMenuID.Text; //aMENUTABLE.CAPTION = txtCaption.Text; switch (this.cbLanguageID.Text) { case "English": aMENUTABLE.CAPTION0 = txtCaption.Text; break; case "Traditional Chinese": aMENUTABLE.CAPTION1 = txtCaption.Text; break; case "Simplified Chinese": aMENUTABLE.CAPTION2 = txtCaption.Text; break; case "HongKong": aMENUTABLE.CAPTION3 = txtCaption.Text; break; case "Japanese": aMENUTABLE.CAPTION4 = txtCaption.Text; break; case "Korean": aMENUTABLE.CAPTION5 = txtCaption.Text; break; case "User-defined1": aMENUTABLE.CAPTION6 = txtCaption.Text; break; case "User-defined2": aMENUTABLE.CAPTION7 = txtCaption.Text; break; case "Default": aMENUTABLE.CAPTION = txtCaption.Text; break; } aMENUTABLE.PARENT = (txtParent.Text == string.Empty) ? null : txtParent.Text; if (cmbSize.SelectedValue == null) aMENUTABLE.ISSHOWMODAL = "s"; else aMENUTABLE.ISSHOWMODAL = cmbSize.SelectedValue.ToString(); if (cmbBGColor.SelectedValue == null) aMENUTABLE.VERSIONNO = "blue"; else aMENUTABLE.VERSIONNO = cmbBGColor.SelectedValue.ToString(); aMENUTABLE.MODULETYPE = "J"; aMENUTABLE.PACKAGE = (txtPackage.Text == string.Empty) ? null : txtPackage.Text; aMENUTABLE.ITEMPARAM = (txtItemParam.Text == string.Empty) ? null : txtItemParam.Text; aMENUTABLE.FORM = (txtForm.Text == string.Empty) ? null : txtForm.Text; aMENUTABLE.ITEMTYPE = (txtItemType.Text == string.Empty) ? null : txtItemType.Text; if (txtSEQ_NO.Text != string.Empty && txtSEQ_NO.Text.Length == 1 && txtSEQ_NO.Text[0] < 58 && txtSEQ_NO.Text[0] > 48) txtSEQ_NO.Text = '0' + txtSEQ_NO.Text; aMENUTABLE.SEQ_NO = (txtSEQ_NO.Text == string.Empty) ? null : txtSEQ_NO.Text; aMENUTABLE.IMAGEURL = (txtImageUrl.Text == string.Empty) ? null : txtImageUrl.Text; if (cbStyle.SelectedValue == null) aMENUTABLE.ISSERVER = "N"; else aMENUTABLE.ISSERVER = cbStyle.SelectedValue.ToString(); aMENUTABLE.OWNER = (txtStyleObject.Text == string.Empty) ? null : txtStyleObject.Text; List<object> menus = new List<object>(); menus.Add(aMENUTABLE); if (optype == OpType.add || optype == OpType.modify) { EFClientTools.DesignClientUtility.SaveDataToTable(menus, "MENUTABLE"); } else { EFClientTools.DesignClientUtility.DeleteDataFromTable(aMENUTABLE, "MENUTABLE"); } if (optype == OpType.add) { List<object> groupmenus = new List<object>(); groupmenus.Add(aMENUTABLE.MENUID); groupmenus.Add("00"); EFClientTools.DesignClientUtility.SaveDataToTable(groupmenus, "GROUPMENUS"); int i = this.infodsMenus.RealDataSet.Tables[0].Rows.Count; for (int j = 0; j < i; j++) { if (this.infodsMenus.RealDataSet.Tables[0].Rows[j]["menuid"].ToString() == aMENUTABLE.MENUID) { MessageBox.Show("menuid already existed !"); curNode = tView.SelectedNode; EnableControl(true); //txtCaption.Enabled = false; //btnReloadTree.Enabled = false; infoCmbSolution.Enabled = false; tView.Enabled = false; optype = OpType.add; iconpath = null; this.txtParent.Text = aMENUTABLE.PARENT; return; } } //TreeNode addNode = new TreeNode(strAddParam[1].ToString()); //if (curNode != null) // curNode.Nodes.Add(addNode); //else // this.tView.Nodes.Add(addNode); } //.CallMethod("GLModule", "OPMenu", strAddParam); //this.ClearAllText(); //new add 为了解修改parent后直接刷新的问题 == refresh //tView.Nodes.Clear(); //this.infodsMenus.Active = false; //this.infodsMenus.Active = true; //ItemToGet(); //tView.ExpandAll(); if (optype == OpType.add) { if (txtParent.Text.Length > 0) { TreeNode[] nodeparent = tView.Nodes.Find(txtParent.Text, true); if (nodeparent.Length > 0) { nodeparent[0].Nodes.Add(txtMenuID.Text, txtCaption.Text); nodeparent[0].Expand(); } } else { tView.Nodes.Add(txtMenuID.Text, txtCaption.Text); } } else if (optype == OpType.modify) { TreeNode[] node = tView.Nodes.Find(txtMenuID.Text, true); if (node.Length > 0) { node[0].Tag = aMENUTABLE; if (string.Compare(cbLanguageID.Text, "Default") == 0) { node[0].Text = txtCaption.Text; } string parentname = (node[0].Parent == null) ? string.Empty : node[0].Parent.Name; if (string.Compare(parentname, txtParent.Text) != 0) { if (txtParent.Text.Length == 0) { node[0].Parent.Nodes.Remove(node[0]); tView.Nodes.Add(node[0]); } else { TreeNode[] nodeparent = tView.Nodes.Find(txtParent.Text, true); if (parentname.Length == 0) { //tView.Nodes.Remove(node[0]); } else { node[0].Parent.Nodes.Remove(node[0]); } if (nodeparent.Length > 0) { nodeparent[0].Nodes.Add(node[0]); } } } } } else { TreeNode[] node = tView.Nodes.Find(txtMenuID.Text, true); if (node.Length > 0) { if (node[0].Parent != null) { node[0].Parent.Nodes.Remove(node[0]); } else { tView.Nodes.Remove(node[0]); } } } //////////////// }
//当只有1个并且选了大尺寸的情况下会出现外框只有1倍宽内容却是2倍宽的重叠现象 private void resetColumnCount(MENUTABLE menuTable, ref string columnCount) { foreach (var menu in menuTable.MENUTABLE1) { if (menu.ISSHOWMODAL == "m" || menu.ISSHOWMODAL == "h") { if (columnCount == "1") columnCount = "2"; } } }
private string SetFMenuClassForMobileGrid(string menuClass, MENUTABLE menuTable) { if (menuTable.ISSERVER != null && menuTable.ISSERVER.ToString() == "G") { if (menuTable.OWNER != null && menuTable.OWNER != "") { var control = this.Page.FindControl(menuTable.OWNER); if (control != null) { control.Visible = true; //control.RenderControl(writer); var grid = control as JQDataGrid; var gridTheme = grid.Theme; return menuClass + " ui-content ui-body-" + gridTheme; } } } return menuClass; }
private String getSize(MENUTABLE menuTable) { //s:square m:wide l:squarepeek h:widepeek a:app String size = ""; switch (menuTable.ISSHOWMODAL) { case "m": size = "wide"; break; case "l": size = "squarepeek"; break; case "h": size = "widepeek"; break; case "a": size = "app"; break; case "s": default: size = "square"; break; } return size; }
private String getCaption(MENUTABLE menuTable) { String caption = ""; if (string.Compare(EFClientTools.ClientUtility.ClientInfo.Locale, "zh-cn", true) == 0 || string.Compare(EFClientTools.ClientUtility.ClientInfo.Locale, "zh-hans-cn", true) == 0) caption = menuTable.CAPTION2; else if (string.Compare(EFClientTools.ClientUtility.ClientInfo.Locale, "zh-tw", true) == 0 || string.Compare(EFClientTools.ClientUtility.ClientInfo.Locale, "zh-hant-tw", true) == 0) caption = menuTable.CAPTION1; else if (string.Compare(EFClientTools.ClientUtility.ClientInfo.Locale, "zh-hk", true) == 0) caption = menuTable.CAPTION3; if (String.IsNullOrEmpty(caption)) caption = menuTable.CAPTION; return caption; }
private void SetMetro(MENUTABLE menu, HtmlTextWriter writer, ref int iColor) { String bgColor = menu.VERSIONNO; if (String.IsNullOrEmpty(bgColor)) { String[] bgColors = { "orange", "purple", "greenDark", "blue", "red", "green", "blueDark", "yellow", "pink", "darken", "gray", "grayLight" }; //bgColor = bgColors[Guid.NewGuid().ToByteArray()[0] % 12]; if (iColor >= bgColors.Length) iColor = 0; bgColor = bgColors[iColor++]; } String menuClass = String.Format("tile {0} image bg-color-{1}", getSize(menu), bgColor); writer.AddAttribute(HtmlTextWriterAttribute.Class, menuClass); String formName = String.Empty; if (!String.IsNullOrEmpty(menu.FORM)) formName = "/" + menu.FORM + ".aspx"; if (!String.IsNullOrEmpty(menu.PACKAGE) && !String.IsNullOrEmpty(formName)) { //writer.AddAttribute(HtmlTextWriterAttribute.Href, System.IO.Path.Combine(menu.PACKAGE, formName)); if (!IsForCloud) writer.AddAttribute(HtmlTextWriterAttribute.Onclick, String.Format("addTab('{0}', '{1}?{2}')", menu.CAPTION, menu.PACKAGE + formName, menu.ITEMPARAM)); else { writer.AddAttribute(HtmlTextWriterAttribute.Onclick, String.Format("openForm({{MODULETYPE:'{0}', FORM:'{1}', MENUID:'{2}', CAPTION:'{3}'}})", menu.MODULETYPE, menu.FORM, menu.MENUID, menu.CAPTION)); } } writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("Menu{0}", menu.MENUID)); writer.RenderBeginTag(HtmlTextWriterTag.A); if (menu.ISSERVER != null && menu.ISSERVER.ToString() != "N" && menu.ISSERVER != "I" && menu.ISSERVER != "T") { #region metro作为控件使用在页面呈现其他类型时候 if (menu.OWNER != null && menu.OWNER != "") { var control = this.Page.FindControl(menu.OWNER); if (control != null) { if (menu.ISSERVER == "G" || menu.ISSERVER == "F") { control.Visible = true; control.RenderControl(writer); control.Visible = false; } else if (menu.ISSERVER == "C" || menu.ISSERVER == "D") { writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ID + "_" + control.ID); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.RenderEndTag();//div System.Reflection.PropertyInfo p = control.GetType().GetProperty("RenderObjectID"); if (p != null) { p.SetValue(control, this.ID + "_" + control.ID, null); } } } } #endregion } else { #region metro 呈现MenuTable资料 if (menu.ISSERVER == "I" || menu.ISSERVER == "T") { var control2 = this.Page.FindControl(menu.OWNER); if (control2 != null && control2.GetType() == typeof(JQRotator)) { (control2 as JQRotator).MenuID = menu.MENUID; } } if (!String.IsNullOrEmpty(menu.IMAGEURL)) { var initialDir = string.Format("Image/MenuTree/Metro_{0}", menu.IMAGEURL); if (SubFolder) initialDir = "../" + initialDir; writer.AddAttribute(HtmlTextWriterAttribute.Src, initialDir); writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("Menu{0}IMG", menu.MENUID)); writer.RenderBeginTag(HtmlTextWriterTag.Img); writer.RenderEndTag();//Img } writer.AddAttribute(HtmlTextWriterAttribute.Class, "textover-wrapper transparent"); writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("Menu{0}DIV", menu.MENUID)); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Id, String.Format("Menu{0}DIVtext", menu.MENUID)); writer.AddAttribute(HtmlTextWriterAttribute.Class, "text2"); var title = getCaption(menu); writer.AddAttribute(HtmlTextWriterAttribute.Title, title); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(title); writer.RenderEndTag();//Div text2 writer.RenderEndTag();//Div textover-wrapper bg-color-blueDark #endregion } writer.RenderEndTag();//A tile wide imagetext wideimage bg-color-blue foreach (MENUTABLE v in menu.MENUTABLE1) { SetMetro(v, writer, ref iColor); } }
//当只有1个并且选了大尺寸的情况下会出现外框只有1倍宽内容却是2倍宽的重叠现象 private void resetColumnCount(MENUTABLE menuTable, ref string columnCount) { int count = 0; if (Int32.TryParse(columnCount, out count)) { if (count > 3) return; int p = 0; foreach (var menu in menuTable.MENUTABLE1) { if (menu.ISSHOWMODAL == "m" || menu.ISSHOWMODAL == "h") { p++; } } if (columnCount == "1" && p == 1) columnCount = "2"; else if (columnCount == "2" && p == 1) columnCount = "3"; else if (columnCount == "2" && p == 2) columnCount = "4"; else if (columnCount == "3" && p >= 1) columnCount = "4"; } }
private string getStyle(MENUTABLE menuTable) { String Style = ""; switch (menuTable.ISSERVER) { case "G": Style = "DataGrid"; break; case "F": Style = "DataForm"; break; case "C": Style = "Chart"; break; case "D": Style = "Dashboard"; break; case "I": Style = "Image"; break; case "T": Style = "Text"; break; case "N": default: Style = "None"; break; } return Style; }