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 { }
}
}
}