using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Text.RegularExpressions; using Infragistics.Win; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; using System.Windows.Forms; using CoreFS.CA06; using Core.Mes.Client.Comm.Tool; using System.Drawing; using com.hnshituo.pur.vo; using System.Threading; namespace Pur.require_plan { class comm { /// /// 绑定combobox /// /// 控件名 /// 数据源ds /// 值 /// 显示名 /// 筛选条件 /// 是否新增 /// 新增itemName public static void FilComboboxAdd(UltraComboEditor cmbx, DataTable dt, string strVal, string strName, string filCondition, Boolean tips, String addItemName, String addItemValue) { if (dt.Columns.Count > 1) { DataView dvw = dt.DefaultView; dvw.RowFilter = filCondition; ArrayList aryTmp = new ArrayList(); if (tips == true) { aryTmp.Add(new ValueListItem(addItemValue, addItemName)); } for (int i = 0; i < dvw.Count; i++) { aryTmp.Add(new ValueListItem(dvw[i][strVal].ToString(), dvw[i][strName].ToString())); } cmbx.DataSource = aryTmp; cmbx.DisplayMember = "DisplayText"; cmbx.ValueMember = "DataValue"; SetComboItemHeight(cmbx); } } /// /// 激活输入当前值行数据 /// /// ultragrid /// 列名 /// 列值 public static string doActiveSelRow(UltraGrid ug, string strColumn, string strKey) { try { if (strKey != "") { foreach (UltraGridRow row in ug.Rows) { if (row.Cells[strColumn].Text.ToString() == strKey) { row.Activated = true; //if (row.ChildBands != null) //row.Expanded = true; } } } return ""; } catch (Exception ex) { return ex.ToString(); } } /// /// 删除子表中在父表中不存在的行 /// /// /// public static void delChildsNotExisPar(ref DataTable dtChilds, DataTable dtParents) { for (int i = 0; i < dtChilds.Rows.Count; ) { bool blExist = false; foreach (DataRow drP in dtParents.Rows) { if (dtChilds.Rows[i]["ITEMCODE"].ToString() == drP["ITEMCODE"].ToString()) { blExist = true; break; } } if (blExist == false) { dtChilds.Rows.RemoveAt(i); } else { i++; } } //return dtChilds; } /// /// 设置UltraComboEditor中的中文和非中文统一高度。 /// /// public static void SetComboItemHeight(UltraComboEditor cmb) { foreach (ValueListItem item in cmb.Items) { if (Regex.IsMatch(item.DisplayText, @"[\u4e00-\u9fa5]+")) { item.Appearance.FontData.SizeInPoints = 9.0F; } else { item.Appearance.FontData.SizeInPoints = 10.5F; } } } /// /// 绑定UltraComboEditor /// /// 控件对象 /// 绑定表 /// 显示名称 /// 值 public static void setUltraComboEditorBind(UltraComboEditor ucbE, DataTable dt, string strDisplayMember, string strValueMember) { strDisplayMember = strDisplayMember.Trim().ToUpper(); strValueMember = strValueMember.Trim().ToUpper(); if (strDisplayMember == strValueMember) { strDisplayMember = strDisplayMember + "1"; } DataTable dtnew = new DataTable(); DataColumn dcDisplayMember = new DataColumn(strDisplayMember); DataColumn dcValueMember = new DataColumn(strValueMember); dtnew.Columns.Add(dcDisplayMember); dtnew.Columns.Add(dcValueMember); Core.Mes.Client.Comm.Control.GridHelper.CopyDataToDatatable(ref dt, ref dtnew, false); //dtnew = getDtGroupBy_reDt(dtnew, strValueMember); ucbE.DataSource = dtnew; ucbE.DisplayMember = strDisplayMember; ucbE.ValueMember = strValueMember; SetComboItemHeight(ucbE); } /// /// 绑定UltraComboEditor /// /// 控件对象 /// 绑定表 /// 显示名称 /// 值 public static void setUltraComboEditorBind(UltraComboEditor ucbE, DataTable dt, string strDisplayMember, string strValueMember, string strFirstItemName, string strFirstItemValue) { strDisplayMember = strDisplayMember.Trim().ToUpper(); strValueMember = strValueMember.Trim().ToUpper(); if (strDisplayMember == strValueMember) { strDisplayMember = strDisplayMember + "1"; } DataTable dtnew = new DataTable(); DataColumn dcDisplayMember = new DataColumn(strDisplayMember); DataColumn dcValueMember = new DataColumn(strValueMember); dtnew.Columns.Add(dcDisplayMember); dtnew.Columns.Add(dcValueMember); DataRow dr = dtnew.NewRow(); dr[strDisplayMember] = strFirstItemName; dr[strValueMember] = strFirstItemValue; dtnew.Rows.Add(dr); Core.Mes.Client.Comm.Control.GridHelper.CopyDataToDatatable(ref dt, ref dtnew, false); //dtnew = getDtGroupBy_reDt(dtnew, strValueMember); ucbE.DataSource = dtnew; ucbE.DisplayMember = strDisplayMember; ucbE.ValueMember = strValueMember; SetComboItemHeight(ucbE); } /// /// 绑定所有的下拉列表的数据 /// public static void getUltcmbBindValueList(UltraComboEditor ultcmb, DataTable dt, string strDisplayMember, string strValueMember) { for (int i = 0; i < dt.Rows.Count; i++) { ValueListItem vlItem = new ValueListItem(dt.Rows[i][strValueMember].ToString().Trim(), dt.Rows[i][strDisplayMember].ToString().Trim()); ultcmb.Items.Add(vlItem); } SetComboItemHeight(ultcmb); } /// /// 绑定所有的下拉列表的数据 /// public static void getUltcmbBindValueList1(UltraComboEditor ultcmb, DataTable dt, string strDisplayMember, string strValueMember) { for (int i = 0; i < dt.Rows.Count; i++) { ValueListItem vlItem = new ValueListItem(dt.Rows[i][strValueMember].ToString().Trim(), dt.Rows[i][strDisplayMember].ToString().Trim()); ultcmb.Items.Add(vlItem); } ValueListItem vlItem1 = new ValueListItem("", "/"); ultcmb.Items.Add(vlItem1); SetComboItemHeight(ultcmb); } /// /// 判断UltraGrid是否存在相同的行 /// /// /// public static bool hasRepeatUgr(RowsCollection ugr, string strColumn) { foreach (UltraGridRow ugr1 in ugr) { UltraGridRow[] rows = null; IQueryable queryableRow = ugr.AsQueryable(); queryableRow = from q in queryableRow where q.Cells[strColumn].Value.ToString().ToUpper() == ugr1.Cells[strColumn].Value.ToString().ToUpper() select q; rows = queryableRow.ToArray(); if (rows != null) { if (rows.Count() > 1) { return true; } } } return false; } /// /// 去掉datatable某列重复值 /// /// /// /// 返回分组列的dataTable public static DataTable getDtGroupBy_reDt(DataTable dt, string strColumn) { if(dt==null || dt.Rows.Count==0) { return new DataTable(); } DataView dv = dt.DefaultView; dv.Sort = strColumn; dt = dv.ToTable(); for (int i = 0; i < dt.Rows.Count; ) { if (i != dt.Rows.Count-1) { if (dt.Rows[i][strColumn].ToString() == dt.Rows[i + 1][strColumn].ToString()) { dt.Rows.RemoveAt(i + 1); } else { i++; } } else { break; } } return dt; } /// /// 去掉datatable某列重复值 /// /// /// /// 返回某一列的值 public static ArrayList getDtGroupBy_reAl(DataTable dt, string strColumn) { ArrayList al = new ArrayList(); var query = from t in dt.AsEnumerable() group t by new { t1 = t.Field(strColumn) } into m select new { DeliverySubId = m.Key.t1, }; if (query.ToList().Count > 0) { query.ToList().ForEach(q => { if (!al.Contains(q.DeliverySubId)) { al.Add(q.DeliverySubId); } }); } return al; } /// /// 获取datatable某列值的ArrayList /// /// /// /// 条件参数列 /// 条件 /// 返回某一列的值 public static ArrayList getDtColumnBy_reAl(DataTable dt, string strColumn,string strConditionColumn,string strCondition) { ArrayList al = new ArrayList(); var query = from t in dt.AsEnumerable() where t.Field(strConditionColumn) == strCondition select t; if (query.ToList().Count > 0) { query.ToList().ForEach(q => { //if (!al.Contains(q.Field(strColumn))) //{ al.Add(q.Field(strColumn)); //} }); } return al; } /// /// 键盘输入事件,控制只能输入数字 /// /// /// public static void txt_QTY_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsNumber(e.KeyChar) && e.KeyChar != (char)8) { e.Handled = true; } } public static string strStatu(CoreFS.CA06.OpeBase ob, string strJavaPackName, object obj, params string[] strProperty) { string strPropertyName = ""; if (strProperty.Length == 0) { strPropertyName = "Status"; } else { strPropertyName = strProperty[0]; } FrmBase frm = new FrmBase(); frm.ob = ob; object o = frm.GetJsonService().execute(strJavaPackName, "findById", new object[] { obj }); string strStatu = o.GetType().GetProperty(strPropertyName).GetValue(o, null).ToString(); return strStatu; } /// /// 打印报表预览 /// /// /// public static CoreResult printReport(CoreFS.CA06.OpeBase ob, string strurl, string strWindowName) { CoreResult core = new CoreResult(); try { Thread.Sleep(500); core.Resultcode = 0; core.Resultdata = ""; FrmRepExcel fBug = new FrmRepExcel(ob, strurl); fBug.AutoSize = true; fBug.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); fBug.WindowState = FormWindowState.Maximized; fBug.Text = strWindowName; fBug.ShowDialog(); return core; } catch (Exception e) { core.Resultcode = 0; core.Resultdata = ""; core.Resultmsg = "预览失败:" + e.Message; return core; } } /// /// 获取自动生成下拉列表控件 /// /// public static UltraComboEditor getNewUltraComboEditor(Form frm) { UltraComboEditor cmb = new UltraComboEditor(); cmb.DropDownStyle = DropDownStyle.DropDownList; cmb.Visible = false; frm.Controls.Add(cmb); return cmb; } /// /// 再次确认操作 /// /// public static Boolean ConfirmOption(string strTips) { if (strTips.LastIndexOf('?') + 1 != strTips.Length && strTips.LastIndexOf('?') + 1 != strTips.Length) { strTips += "?"; } if (MessageUtil.ShowYesNoAndTips(strTips).Equals(DialogResult.Yes)) { return true; } else { return false; } } /// /// 刷新Grid数据并根据数据调整Grid列宽(输入不需要调整列宽的列) /// /// 需要处理的Grid /// 不需要调整列宽的列,或band的key值 public static void RefreshAndAutoSizeExceptColumns(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, params string[] cols) { try { //转化为大写 for (int i=0;i /// 刷新Grid数据并根据数据调整Grid列宽(输入需要调整列宽的列) /// /// 需要处理的Grid /// 需要调整列宽的列 public static void RefreshAndAutoSizeColumns(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, params string[] cols) { try { //ultraGrid.DataBind(); //转化为大写 for (int i = 0; i < cols.Length; i++) { cols[i] = cols[i].ToUpper(); } foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns) { if (!cols.Contains(column.Key.ToUpper())) { continue; } column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand); } } //ultraGrid.Refresh(); } catch { } } } }