using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WZ.Useful.Commons; namespace WMS { public static class Helper { public static DataTable ToDataTable(IList list) { return ToDataTable(list, null); } /// /// 将泛型集合类转换成DataTable /// /// 集合项类型 /// 集合 /// 需要返回的列的列名 /// 数据集(表) public static DataTable ToDataTable(IList list, params string[] propertyName) { List propertyNameList = new List(); if (propertyName != null) propertyNameList.AddRange(propertyName); DataTable result = new DataTable(); if (list.Count > 0) { PropertyInfo[] propertys = list[0].GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { try { Type nullInt32 = typeof(Int32?); Type classicInt32 = typeof(Int32); if (propertyNameList.Count == 0) { //result.Columns.Add(pi.Name, pi.PropertyType); var tmp = pi.PropertyType.UnderlyingSystemType.ToString(); result.Columns.Add(pi.Name, tmp.Contains("System.Nullable") ? classicInt32 : pi.PropertyType); } else { if (propertyNameList.Contains(pi.Name)) { var tmp = pi.PropertyType.UnderlyingSystemType.ToString(); result.Columns.Add(pi.Name, tmp.Contains("System.Nullable") ? classicInt32 : pi.PropertyType); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { if (propertyNameList.Count == 0) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } else { if (propertyNameList.Contains(pi.Name)) { object obj = pi.GetValue(list[i], null); tempList.Add(obj); } } } object[] array = tempList.ToArray(); result.LoadDataRow(array, true); } } return result; } public static void DataSetToExcel(DataTable ds) { string filePath = FileDialogHelper.SaveExcel(); WZ.Useful.Commons.ExcelHelper.DataSetToExcel(ds, filePath); } /// /// 将linq查询转换为datatable /// /// /// /// public static DataTable CopyToDataTable(IEnumerable array) { if (array == null) { return null; } var ret = new DataTable(); foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T))) ret.Columns.Add(dp.Name); foreach (T item in array) { var Row = ret.NewRow(); foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T))) Row[dp.Name] = dp.GetValue(item); ret.Rows.Add(Row); } return ret; } /// /// 翻译 /// /// public static void ChangeLanguage(Control c) { try { WZ.Useful.Commons.ControlHelper.SetControlProperty(c, "Text", WMSFrmMain.languageDic[c.Name]); } catch { } } /// /// 翻译 /// /// public static void ChangeLanguage(DataGridViewColumn c) { try { c.HeaderText = WMSFrmMain.languageDic[c.Name]; } catch { } } /// /// 翻译 /// /// public static void ChangeLanguage(ToolStripMenuItem c) { try { c.Text = WMSFrmMain.languageDic[c.Name]; } catch { } } /// /// 翻译 /// /// public static void ChangeLanguage(ToolStripItem c) { try { c.Text = WMSFrmMain.languageDic[c.Name]; } catch { } } public static void FindAllControls(Control c) { foreach (Control ctrl in c.Controls) { ChangeLanguage(ctrl); //if (ctrl is DataGridView) //{ // FindAllControls(ctrl); //} if (ctrl.Controls.Count > 0) { FindAllControls(ctrl); } } } } }