/// <summary> /// 设置行高 /// </summary> /// <param name="text"></param> public void SetD19(string text) { if (!string.IsNullOrEmpty(text)) { MyDataGrid.RowHeight = CommonConverter.StringToInt(text); } }
/// <summary> /// 获取控件基本信息 /// </summary> /// <param name="pageid"></param> /// <returns></returns> private List <ControlDetailForPage> GetControlBaseInfo(int pageid) { string sql = @"select * from hs_new_page_ctrls t where t.page_id = '{0}'"; sql = string.Format(sql, pageid); SQLiteDataReader reader = this.ExcuteReader(sql); List <ControlDetailForPage> listControl = new List <ControlDetailForPage>(); while (reader.Read()) { //int index = 0; ControlDetailForPage obj = new ControlDetailForPage(); foreach (var prop in obj.GetType().GetFields()) { string value = reader[prop.Name].ToString(); //这里判断一下类型 if ("Boolean".Equals(prop.FieldType.Name)) { prop.SetValue(obj, CommonConverter.StringToBool(value)); } else if ("Int32".Equals(prop.FieldType.Name)) { prop.SetValue(obj, CommonConverter.StringToInt(value)); } else { prop.SetValue(obj, value); } } listControl.Add(obj); } reader.Close(); this._connection.Close(); return(listControl); }
/// <summary> /// 获取列与值对应 /// </summary> /// <param name="inText"></param> /// <returns></returns> private Dictionary <int, string> GetDicCtrlToColumn(string inText) { Dictionary <int, string> dicresult = new Dictionary <int, string>(); //顺便获取列名与属性名对应的字典 _propertyNameToColumnName.Clear(); string[] array = inText.Split('&'); int propertyIndex = 0; foreach (string str in array) { string[] value = str.Split('='); int tagId = CommonConverter.StringToInt(value[0].Split('.')[0]); if (!dicresult.ContainsKey(tagId)) { dicresult.Add(tagId, value[1]); if (!_propertyNameToColumnName.ContainsKey(value[1])) { _propertyNameToColumnName.Add(value[1], "Value" + propertyIndex.ToString()); propertyIndex++; } } } return(dicresult); }
/// <summary> /// 设置表格的数据 /// </summary> /// <param name="value"></param> public void SetD6(string value) { //1、sql 2、字典实体 if ("1".Equals(_sourceType)) { string sql = value.ToString(); SqlController cn = new SqlController(); var dicReturn = cn.ExcuteSqlWithReturn(sql); Dictionary <string, string>[] result = dicReturn.data; List <KeyValuePair <string, int> > source = this.DictionaryToListKeyValuePair(result); this.MyChart.DataContext = source; } else if ("2".Equals(_sourceType)) { string valueStr = value.Trim(); string[] valueArray = valueStr.Split('&'); List <KeyValuePair <string, int> > dicTemp = new List <KeyValuePair <string, int> >(); foreach (string str in valueArray) { dicTemp.Add(new KeyValuePair <string, int>(str.Split('=')[0], CommonConverter.StringToInt(str.Split('=')[1]))); } //foreach (string key in dicTemp.Keys) //{ // //暂时注释,后面h实现事件的时候顺便实现这个 // //LocalCacher.AddCache(key, DecoderAssistant.FormatSql(dicTemp[key], this)); //} } }
/// <summary> /// 获取该页面所有版本 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnGetPageVersionClick(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(txtPageId.Text) && CommonConverter.StringToInt(txtPageId.Text) != -1) { RefreshDataGrid(txtPageId.Text); } }
/// <summary> /// 刷新版本列表 /// </summary> /// <param name="pageId"></param> private async void RefreshDataGrid(string pageId) { var listpageresult = await _pageConnection.GetPageGroupInfo(pageId); listpageresult = listpageresult.OrderBy(p => CommonConverter.StringToInt(p.version)).ToList(); MyDataGrid.ItemsSource = listpageresult; }
/// <summary> /// 初始化控件,由于比较复杂,所以这种情况由控件自身进行初始化 /// </summary> /// <param name="controlObj"></param> /// <param name="listControlObj"></param> /// <param name="listControl"></param> public void InitControl(ControlDetailForPage controlObj, List <ControlDetailForPage> listControlObj, List <IControl> listControl) { this.Items.Clear(); List <ControlDetailForPage> listgroups = this.GetParentGroups(listControlObj, controlObj.d17); //开始生成控件 foreach (ControlDetailForPage groupobj in listgroups) { //生成树节点 TreeViewItem itemGroup = new TreeViewItem(); itemGroup.Header = ProduceTreeviewItem(listControlObj, listControl, groupobj); //获取该目录下的子节点 List <ControlDetailForPage> listItems = listControlObj.Where(p => groupobj.ctrl_id.ToString().Equals(p.d13) && xinLongyuControlType.pcnavigationBarItemType.Equals(p.ctrl_type)).ToList(); if (object.Equals(listItems, null) || listItems.Count < 1) { continue; } //排序 listItems = listItems.OrderBy(p => CommonConverter.StringToInt(p.d21)).ToList(); foreach (ControlDetailForPage itemObj in listItems) { TreeViewItem childItem = new TreeViewItem(); childItem.Header = ProduceTreeviewItem(listControlObj, listControl, itemObj); childItem.Tag = itemObj; childItem.MouseDoubleClick += ChildItem_MouseDoubleClick; itemGroup.Items.Add(childItem); } this.Items.Add(itemGroup); } }
/// <summary> /// 装载窗体 /// 这里暂时唯一的用处是用来与菜单栏控件进行关联 /// </summary> /// <param name="value"></param> public async void SetA1(string value) { if (string.IsNullOrEmpty(value)) { return; } // 这里加载新的窗口ID的页面 int pageId = CommonConverter.StringToInt(value); if (pageId == -1) { return; } _currentPageId = pageId; var page = await _pageFactory.ProducePage(_currentPageId, true); if (object.Equals(page, null)) { return; } Frame frame = new Frame(); page.HorizontalAlignment = HorizontalAlignment.Left; page.VerticalAlignment = VerticalAlignment.Top; frame.Content = page; frame.Width = page.Width; frame.Height = page.Height; frame.VerticalAlignment = VerticalAlignment.Top; frame.HorizontalAlignment = HorizontalAlignment.Left; this.Children.Clear(); this.Children.Add(frame); }
/// <summary> /// 解析右半边部分 /// </summary> /// <param name="rightPart"></param> /// <param name="control"></param> private void DecodeRightPart(string rightPart, DecoderOfControl control) { //先看看简单的情况 if (!rightPart.StartsWith("{")) { control.RightDirectValue = rightPart; } else { //右边也包含控件ID的情况 string pattern = @"{(.*)}"; string trimPattern = Regex.Match(rightPart, pattern).Groups[1].ToString(); string[] rightpart = trimPattern.Split('.'); DecoderOfControl obj = new DecoderOfControl(); obj.CtrlId = CommonConverter.StringToInt(rightpart[0]); //obj.LeftCtrlProperty = rightpart[1]; if (Regex.IsMatch(trimPattern, @"\d+.a\d+[(]\w*[)]")) { //取参数值 obj.Patameter = Regex.Match(trimPattern, @"[(](.*)[)]").Groups[1].ToString(); obj.LeftCtrlProperty = rightpart[1].Replace(Regex.Match(trimPattern, @"[(](.*)[)]").Groups[0].ToString(), string.Empty); } else { obj.LeftCtrlProperty = rightpart[1]; } control.RightDirectValue = obj; } }
/// <summary> /// 设置总时长 /// </summary> /// <param name="text"></param> public void SetD10(string text) { int value = CommonConverter.StringToInt(text); if (value != -1) { this._totalTime = value; } }
/// <summary> /// 设置时间间隔 /// </summary> /// <param name="text"></param> public void SetD11(string text) { int interval = CommonConverter.StringToInt(text); if (interval != -1) { _timer.Interval = new TimeSpan(interval * 1000); } }
/// <summary> /// 解析事件实体 /// </summary> /// <param name="inText"></param> /// <returns></returns> public DecoderOfControl DecodeNewCharacter(string inText) { DecoderOfControl control = new DecoderOfControl(); inText = inText.Trim(); if (inText.ToLower().StartsWith("sql:")) { //sql语法的进行单独处理 return(DecodeSqlEvent(inText)); } if (inText.IndexOf("=") != -1 && Regex.IsMatch(inText, @"\d+.d\d+ *= *\w*")) { if (Regex.IsMatch(inText, @"\d+.d\d+ *=.*")) { string leftPart = inText.Trim().Split('=')[0]; leftPart = Regex.Match(leftPart, @"\d+.\w\d+").Groups[0].ToString(); int rightIndex = inText.Trim().IndexOf("="); string rightPart = inText.Substring(rightIndex + 1, inText.Length - rightIndex - 1).Trim(); this.DecodeLeftPart(leftPart, control); this.DecodeRightPart(rightPart, control); } } else if (Regex.IsMatch(inText, @"\d+.a\d+[(]((.|\n)*)[)]")) { if (Regex.IsMatch(inText, @"\d+.a\d+[(]\d+,\w+=.*")) { string leftParttern = Regex.Match(inText, @"[(]((.|\n)*)[)]").Groups[0].ToString().Trim(); string leftPart = inText.Replace(leftParttern, string.Empty); leftPart = Regex.Match(leftPart, @"\d+.\w\d+").Groups[0].ToString(); control.CtrlId = CommonConverter.StringToInt(leftPart.Split('.')[0]); control.LeftCtrlProperty = leftPart.Split('.')[1]; control.RightDirectValue = leftParttern.Substring(1, leftParttern.Length - 2); } else { control.CtrlId = CommonConverter.StringToInt(inText.Split('.')[0]); string rightpart = inText.Substring(inText.IndexOf(".") + 1); control.RightDirectValue = Regex.Match(rightpart, @"[(]((.|\n)*)[)]").Groups[1].ToString(); control.LeftCtrlProperty = rightpart.Replace(Regex.Match(rightpart, @"[(]((.|\n)*)[)]").Groups[0].ToString(), string.Empty); } } //事件语法,例如12.a1 else if (Regex.IsMatch(inText, @"\d+.a|A\d+")) { control.CtrlId = CommonConverter.StringToInt(inText.Trim().Split('.')[0]); control.LeftCtrlProperty = inText.Trim().Split('.')[1]; } //事件语法,例如12.a5(1236) return(control); }
private bool dealWithLowerAndEqual(string leftvalue, string rightValue) { if (CommonConverter.StringToInt(leftvalue) <= CommonConverter.StringToInt(rightValue)) { return(true); } else { return(false); } }
private bool dealWithUpper(string leftvalue, string rightValue) { if (CommonConverter.StringToInt(leftvalue) > CommonConverter.StringToInt(rightValue)) { return(true); } else { return(false); } }
/// <summary> /// 设置底部显示的一些相关信息 /// </summary> private void DealWithPageIndex() { _rowCount = GetTotalRowCount(); _pageSize = CommonConverter.StringToInt(_CurrentCtObj.d15); if (_pageSize != 0 && _pageSize != -1) { _totalPage = _rowCount / _pageSize; } lblCurrentPageIndex.Text = _currentPageIndex.ToString() + " / " + _totalPage.ToString(); //当前页面设置 lblTotalPageCount.Text = "共" + _rowCount.ToString() + " 条"; //总数据条数设置 }
/// <summary> /// 设置限制的长度 /// </summary> /// <param name="text"></param> public void SetD11(string text) { if (string.IsNullOrEmpty(text)) { return; } var length = CommonConverter.StringToInt(text); if (length != -1) { this.txtContent.MaxLength = length; } }
/// <summary> /// 获取所有的一级目录 /// </summary> /// <returns></returns> private List <ControlDetailForPage> GetParentGroups(List <ControlDetailForPage> listControlObj, string childlistStr) { List <int> controlIdList = JsonController.DeSerializeToClass <List <int> >(childlistStr); if (controlIdList.Count < 1) { return(null); } //获取父目录控件并进行排序 List <ControlDetailForPage> childrenList = listControlObj.Where(p => controlIdList.Contains(p.ctrl_id) && validStr.Equals(p.d12)) .OrderBy(p => CommonConverter.StringToInt(p.d21)).ToList(); return(childrenList); }
/// <summary> /// 获取行数 /// </summary> /// <returns></returns> private int GetTotalRowCount() { string _rowCountSql = _CurrentCtObj.d14; _rowCountSql = EventAssitant.FormatSql(_rowCountSql, _currentIControl); if (!string.IsNullOrEmpty(_rowCountSql)) { var result = _sqlController.ExcuteSqlWithReturn(_rowCountSql); if (!object.Equals(result.data, null) && result.data.Length > 0) { int totalCount = CommonConverter.StringToInt(result.data[0].First().Value); return(totalCount); } } return(0); }
/// <summary> /// 页面跳转事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnJumpPage(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(this.txtJumpPage.Text)) { return; } int pageIndex = CommonConverter.StringToInt(this.txtJumpPage.Text); if (pageIndex <= _totalPage && pageIndex >= 1) { _currentPageIndex = pageIndex; lblCurrentPageIndex.Text = _currentPageIndex.ToString() + " / " + _totalPage.ToString();//当前页面设置 PageTurning(); } else { MessageBox.Show("输入的页面不存在!"); } }
/// <summary> /// 设置表格的列 /// </summary> /// <param name="listControlObj"></param> /// <param name="gridObj"></param> private void SetDataGridColumns(List <ControlDetailForPage> listControlObj, ControlDetailForPage gridObj) { mydatagridview.Columns.Clear(); //获取所有的列 List <int> listChildId = JsonController.DeSerializeToClass <List <int> >(gridObj.d17); List <ControlDetailForPage> listAllColumns = listControlObj.Where(p => listChildId.Contains(p.ctrl_id) && xinLongyuControlType.GridColumnName.Equals(p.ctrl_type)) .OrderBy(p => CommonConverter.StringToInt(p.d21)).ToList(); //获取键值对应字典 Dictionary <int, string> ctrlIdToColumnName = this.GetDicCtrlToColumn(gridObj.d22); //生成列类型 foreach (ControlDetailForPage ctObj in listAllColumns) { DataGridColumn column = GetDataGridColumn(ctObj, ctrlIdToColumnName, listControlObj); column.Header = ctObj.d0; mydatagridview.Columns.Add(column); } //设置行高 mydatagridview.RowHeight = CommonConverter.StringToInt(gridObj.d19); }
/// <summary> /// 打开新的窗体 /// </summary> /// <param name="inText"></param> /// <param name="isDialog"></param> private async void OpenPage(string inText, bool isDialog = false) { int pageId = CommonConverter.StringToInt(inText); if (pageId != -1) { OpenPageById(pageId, isDialog); } //接下来是有传值的方法,格式应该是类似(1236, text={1.d0}&type=animal) else { if (Regex.IsMatch(inText, @"\d+, *\w+=.*")) { pageId = CommonConverter.StringToInt(inText.Split(',')[0].Trim()); string parameters = inText.Split(',')[1].Trim(); string[] parameterArray = parameters.Split('&'); Dictionary <string, string> dicParameter = new Dictionary <string, string>(); Dictionary <string, string> dicParameterResult = new Dictionary <string, string>(); foreach (string str in parameterArray) { dicParameter.Add(str.Split('=')[0], str.Split('=')[1]); } foreach (string key in dicParameter.Keys) { dicParameterResult.Add(key, EventAssitant.FormatSql(dicParameter[key], this)); } OpenPageById(pageId, isDialog, dicParameterResult); } else { string pageid = EventAssitant.FormatSql(inText, this); pageId = CommonConverter.StringToInt(pageid); if (pageId != -1) { OpenPageById(pageId, isDialog); } } } }
/// <summary> /// 设置字体大小 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="inControl"></param> /// <param name="text"></param> public static void SetD6 <T>(this T inControl, string text) where T : IControl { if (!object.Equals(text, null)) { ControlDetailForPage ctobj = (inControl as FrameworkElement).Tag as ControlDetailForPage; ctobj.d6 = text; } //这里增加一个判断流程是为了兼容字体样式之前的版本,防止需要全部回去修改配置 if (!string.IsNullOrEmpty(text)) { try { if (!string.IsNullOrEmpty(text) && CommonConverter.StringToInt(text) == -1) { ExcuteClassMethodByname(inControl, "SetD6", text); } } catch { } //if (ExcuteClassMethodByname(inControl, "SetD6", text) == ReturnConst.CancleReturn) //{ //} } }
/// <summary> /// 格式化sql,主要就是为了讲里面的参数赋值 /// </summary> /// <param name="inText"></param> /// <returns></returns> public static string FormatSql(string inText, IControl ic) { SetCurrentControlList(ic); string pattern = @"[{]\d+.d\d+[}]"; string resultSql = inText.Clone().ToString(); foreach (var data in Regex.Matches(inText, pattern)) { string ctrlId = data.ToString().Substring(1, data.ToString().Length - 2).Split('.')[0]; string ctrlProperty = data.ToString().Substring(1, data.ToString().Length - 2).Split('.')[1]; try { int controlIndex = CurrentControlList.FindIndex(p => ctrlId.Equals(((p as FrameworkElement).Tag as ControlDetailForPage).ctrl_id.ToString())); if (controlIndex != -1) { IControl rightControl = CurrentControlList[controlIndex]; string paramter = GetValue(rightControl, ctrlProperty).ToString(); resultSql = resultSql.Replace(data.ToString(), paramter); } else { resultSql = resultSql.Replace(data.ToString(), string.Empty); } } catch { resultSql = resultSql.Replace(data.ToString(), string.Empty); } } string secondPattern = @"[{]\d+.a\d+[(]\w+[)][}]"; foreach (var data in Regex.Matches(inText, secondPattern)) { string pairStr = data.ToString().Substring(1, data.ToString().Length - 2); string parameter = Regex.Match(pairStr.Split('.')[1], @"\((.*?)\)").Groups[1].ToString(); string ctrlProperty = pairStr.Split('.')[1].Replace(Regex.Match(pairStr.Split('.')[1], @"\((.*?)\)").Groups[0].ToString(), string.Empty); string ctrlId = pairStr.Split('.')[0]; try { int controlIndex = CurrentControlList.FindIndex(p => CommonConverter.StringToInt(ctrlId) == ((p as FrameworkElement).Tag as ControlDetailForPage).ctrl_id); if (controlIndex != -1) { IControl rightControl = CurrentControlList[controlIndex]; string paramter = GetValueWithParameter(rightControl, ctrlProperty, parameter).ToString(); resultSql = resultSql.Replace(data.ToString(), paramter); } else { resultSql = resultSql.Replace(data.ToString(), string.Empty); } } catch { resultSql = resultSql.Replace(data.ToString(), string.Empty); } } return(resultSql); }
/// <summary> /// 设置图标类型 /// </summary> /// <param name="text"></param> public void SetD5(string text) { this.SetType(CommonConverter.StringToInt(text)); }
/// <summary> /// 审核页面 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnReviewClick(object sender, RoutedEventArgs e) { pageDetailForGroup tagItem = (sender as Button).Tag as pageDetailForGroup; bool result = await _pageConnection.ReviewPage(tagItem.page_id.ToString(), CommonConverter.StringToInt(tagItem.version)); if (result) { //RefreshDataGrid(tagItem.page_id.ToString()); //这里为了提高性能,不去数据库重新获取 var listpageresult = MyDataGrid.ItemsSource as List <pageDetailForGroup>; listpageresult = listpageresult.Select( x => { if (x.version.Equals(tagItem.version)) { x.review = "1"; } else { x.review = "-1"; } return(x); }).ToList(); MyDataGrid.ItemsSource = listpageresult; MyDataGrid.SelectedIndex = -1; // MessageBox.Show("审核成功!"); } else { MessageBox.Show("审核失败!"); } }
/// <summary> /// 解析左半边部分 /// </summary> /// <param name="leftPart"></param> private void DecodeLeftPart(string leftPart, DecoderOfControl control) { control.CtrlId = CommonConverter.StringToInt(leftPart.Trim().Split('.')[0]); //排除掉"."符号 control.LeftCtrlProperty = leftPart.Trim().Split('.')[1]; }
/// <summary> /// 字典转键值对数组 /// </summary> /// <param name="dicArray"></param> /// <returns></returns> private List <KeyValuePair <string, int> > DictionaryToListKeyValuePair(Dictionary <string, string>[] dicArray) { List <KeyValuePair <string, int> > listresult = new List <KeyValuePair <string, int> >(); foreach (Dictionary <string, string> dic in dicArray) { List <string> keyList = new List <string>(dic.Keys); KeyValuePair <string, int> keyvalue = new KeyValuePair <string, int>(dic[keyList[0]], CommonConverter.StringToInt(dic[keyList[1]])); listresult.Add(keyvalue); } return(listresult); }
/// <summary> /// 赋值操作 /// </summary> /// <param name="control"></param> /// <param name="controlValue"></param> /// <param name="propertyName"></param> private static void SetValue(IControl control, object controlValue, string propertyName) { if (!object.Equals(controlValue, null)) { switch (propertyName.ToLower()) { case "d0": if (controlValue is string) { //处理转义符的换行问题 controlValue = FormatSql(controlValue.ToString(), control); controlValue = controlValue.ToString().Replace("#newline#", "\r\n"); } control.SetD0(controlValue); break; case "d1": control.SetD1(CommonConverter.StringToInt(controlValue.ToString())); break; case "d2": control.SetD2(CommonConverter.StringToInt(controlValue.ToString())); break; case "d3": control.SetD3D4(CommonConverter.StringToInt(controlValue.ToString()), (int)(control as FrameworkElement).Margin.Left); break; case "d4": control.SetD3D4((int)(control as FrameworkElement).Margin.Top, CommonConverter.StringToInt(controlValue.ToString())); break; case "d5": control.SetD5(controlValue.ToString()); break; case "d6": control.SetD6(controlValue.ToString()); break; case "d7": control.SetD7(controlValue.ToString()); break; case "d15": control.SetD15(controlValue.ToString()); break; case "d20": control.SetD20(controlValue.ToString()); break; case "a0": control.SetA0(string.Empty); break; case "a1": control.SetA1(controlValue.ToString()); break; //缓存事件 case "a2": control.SetA2(controlValue.ToString()); break; //最小化窗体的方法 case "a4": control.SetA4(controlValue.ToString()); break; //跳转页面方法 case "a5": control.SetA5(controlValue.ToString()); break; //对话框跳转页面方法 case "a6": control.SetA6(controlValue.ToString()); break; case "a7": control.SetA7(string.Empty); break; case "a8": control.SetA8(controlValue.ToString()); break; //这里是默认调用的方法 case "": control.SetD0(controlValue); break; default: break; } } }