ldj/epick/基类/BasicRibbonForm.cs

550 lines
20 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
//using DeiNiu.wms.win.utils;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Grid;
using DeiNiu.Utils;
using System.Data.OleDb;
using DeiNiu.wms.win.utils;
using System.Configuration;
using System.Security.Cryptography;
using System.Net;
using System.IO;
namespace DeiNiu.wms.win
{
public partial class BasicRibbonForm : DevExpress.XtraBars.Ribbon.RibbonForm
{
public BasicRibbonForm()
{
InitializeComponent();
readPrinters();
}
protected void showWaitForm(string desc=null)
{
if (this.splashScreenManager1.IsSplashFormVisible)
{
return;
}
closeWaitForm();
try
{
this.splashScreenManager1.ShowWaitForm();
}
catch { }
if (!string.IsNullOrEmpty(desc))
{
splashScreenManager1.SetWaitFormDescription(desc);
}
// WaitFormService.Show(this);
}
protected void closeWaitForm()
{
if (!this.splashScreenManager1.IsSplashFormVisible)
{
return;
}
try
{
this.splashScreenManager1.CloseWaitForm();
}
catch { }
// WaitFormService.Close();
}
protected struct Colitem
{
public int key ;
public string value ;
public override string ToString()
{
return value;
}
}
protected void initialComboBoxe(ComboBoxEdit combo, Dictionary<int, string> dic, bool isForQuery = true)
{
combo.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
combo.Properties.Items.Clear();
ComboBoxItemCollection col = combo.Properties.Items;
col.BeginUpdate();
if (isForQuery)
{
col.Add("全部");
}
try
{
foreach (int key in dic.Keys)
{
Colitem c = new Colitem();
c.key = key;
c.value = dic[key];
col.Add(c);
}
}
finally
{
col.EndUpdate();
}
combo.SelectedIndex = 0;
}
protected void initialComboBoxe(ComboBoxEdit combo, DataRow[] drss,bool isForQuery =true)
{
}
protected void showErrorMsg(string message)
{
closeWaitForm();
/* if ( message.Equals(WmsConstants.WCF_UN_AUTH_MESSAGE))
{
if (this.ParentForm != null){
((main)this.ParentForm).showLogin();
}
else if (this is main)
{
((main)this).showLogin();
}
return;
}*/
MessageBox.Show(message, "出错了", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
protected void setupGridView(GridView gridview, bool canMultiSelect,bool showGroupPannel = true,bool canFocus = true)
{
gridview.OptionsView.EnableAppearanceEvenRow = true; //偶数行颜色变化
gridview.OptionsView.EnableAppearanceOddRow = false; //奇数行颜色变化
gridview.OptionsSelection.MultiSelect = canMultiSelect;// true;// canMultiSelect; //多选模式下可以高亮选中cell
gridview.OptionsView.ShowGroupPanel = showGroupPannel;
gridview.OptionsClipboard.CopyColumnHeaders = DevExpress.Utils.DefaultBoolean.False;
gridview.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CellSelect;
gridview.OptionsBehavior.Editable = false;
gridview.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.CellFocus;
gridview.OptionsSelection.EnableAppearanceHideSelection = false;
// gridview.OptionsSelection.EnableAppearanceFocusedCell = canFocus;
// gridview.OptionsSelection.EnableAppearanceFocusedRow = canFocus;
// gridview.OptionsSelection.EnableAppearanceHideSelection = true;
}
//private void GridView_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
//{
// if (e.Control & e.KeyCode == Keys.C)
// {
// Clipboard.SetDataObject(AdvBandedGridView1.GetFocusedRowCellValue(AdvBandedGridView1.FocusedColumn));
// e.Handled = true;
// }
//}
//显示行的序号
protected void gridView_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
protected void debug(string msg)
{
DeiNiu.Utils.LogHelper.debug(this.GetType(), msg);
}
/// <summary>
/// 获取GridView过滤或排序后的数据集
/// </summary>
/// <param name="view"></param>
/// <returns></returns>
public System.Collections.IList GetGridViewFilteredAndSortedData(DevExpress.XtraGrid.Views.Grid.GridView view)
{
return view.DataController.GetAllFilteredAndSortedRows();
}
protected void gridview_LostFocus(object sender, EventArgs e)
{
switchGridViewRowSelection((GridView)sender, false);
}
protected void switchGridViewRowSelection(GridView gridView, bool isOn)
{
// gridView.OptionsSelection.EnableAppearanceFocusedCell = isOn;
gridView.OptionsSelection.EnableAppearanceFocusedRow = isOn;
gridView.OptionsSelection.EnableAppearanceHideSelection = !isOn;
}
protected void gridview_GotFocus(object sender, EventArgs e)
{
switchGridViewRowSelection((GridView)sender, true);
}
protected void showLogin()
{
// createMenus();
}
protected bool checkPermission(string permision)
{
return false;
}
protected string filtRiskChar(string str) //过滤非法字符
{
string s = "";
s = str.Replace("'", " ");
s = s.Replace(";", " ");
s = s.Replace("1=1", " ");
s = s.Replace("|", " ");
s = s.Replace("<", " ");
s = s.Replace(">", " ");
s = s.Replace("#", " ");
s = s.Replace("insert", " ");
s = s.Replace("update", " ");
s = s.Replace("delete", " ");
s = s.Replace("drop", " ");
s = s.Replace("truncate", " ");
s = s.Replace("alter", " ");
s = s.Replace("create", " ");
return s;
}
protected void showInfoMsg(string message)
{
closeWaitForm();
MessageBox.Show(message, "通知", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
string strTitle = "报表";
DataSet ExcelDS = new DataSet();
DataSet lblSelectDs = new DataSet();
// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void exportExcel(string title ,GridView gvSelectedItems)
{
showWaitForm();
string strName = "";
try
{
if (gvSelectedItems.RowCount == 0)
{
showErrorMsg("Grid表格中没有数据不能导出为Excel");
return;
}
DateTime MMSDate = DateTime.Now;
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
saveFileDialog.Filter = "导出Excel(*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出文件保存路径";
//默认的文件名
saveFileDialog.FileName = title + " - " + MMSDate.ToString("yyyyMMdd");
//saveFileDialog.ShowDialog();
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
strName = saveFileDialog.FileName;
if (strName.Length != 0)
{
// gridColumn2.Visible = false;
// gridItemID2.Visible = true;
// gridItemID2.VisibleIndex = 0;
gvSelectedItems.ExportToXls(strName);
// gridColumn2.Visible = true;
// gridItemID2.Visible = false;
showInfoMsg("导出Excel成功");
//关闭操作
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application objExcel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook objWorkBook = objExcel.Workbooks.Add(miss);
Microsoft.Office.Interop.Excel.Worksheet objSheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkBook.ActiveSheet;
objWorkBook.Close(null, null, null);
objExcel.Workbooks.Close();
objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
objSheet = null;
objWorkBook = null;
objExcel = null;
}
else
{
showErrorMsg("保存的Excel名称不能为空");
}
}
}
}
catch (System.Exception msg)
{
// showErrorMsg(msg.ToString());
}
finally
{
GC.Collect();
}
}
//导入Excel
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void importExcel( )
{
try
{
showWaitForm();
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Excel文件";
ofd.FileName = "";
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
ofd.Filter = "Excel文件(*.xls)|*.xls";
ofd.ValidateNames = true; //文件有效性验证ValidateNames验证用户输入是否是一个有效的Windows文件名
ofd.CheckFileExists = true; //验证路径有效性
ofd.CheckPathExists = true; //验证文件有效性
string strName = string.Empty;
if (ofd.ShowDialog() == DialogResult.OK)
{
strName = ofd.FileName;
}
if (strName == "")
{
return;
}
if (ReadExcel(strName ))
{
showInfoMsg("数据导入结束");
//isChanged = true;
}
else
showErrorMsg("数据导入失败,请检查导入的Excel格式与数据是否正确");
this.Cursor = Cursors.Default;
}
catch (System.Exception Msg)
{
showErrorMsg("数据导入失败,请检查导入的Excel格式与数据是否正确");
//MessageBoxShow.ShowErrMessage(Msg.ToString()+"数据导入失败,请检查导入的Excel格式与数据是否正确");
}
}
/// <summary>
/// Excel数据导入方法
/// </summary>
/// <param name="filePath"></param>
/// <param name="dgv"></param>
/// <returns></returns>
public bool ReadExcel(string filePath )
{
bool isVailed = false;
//根据路径打开一个Excel文件并将数据填充到ds中
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
//获取Excel中的sheet的名称
string SheetName = GetExcelSheetNames(filePath)[0];
//strExcel = "select * from [sheet1$]";
strExcel = "select * from [" + SheetName + "$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
// RealSailing.DataSet.SlipInfo.SLPD010_SLIPSUMHDS ds = new RealSailing.DataSet.SlipInfo.SLPD010_SLIPSUMHDS();
System.Data.DataSet ds = new System.Data.DataSet();
myCommand.Fill(ds, "table1");
conn.Close();
if (ds.Tables["table1"].Rows.Count == 0)
{
showErrorMsg("要导入的Excel没有数据");
}
ExcelDS.Clear();
showWaitForm();
clearOldData();
int testK = 0;
for (int j = 0; j < ds.Tables["table1"].Rows.Count; j++)
{
testK++;
//把数据填充到ds中
try
{
FillDataToDs(ds.Tables["table1"].Rows[j]);
isVailed = true;
}
catch (Exception e)
{
showErrorMsg(e.Message);
MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
DialogResult dr =
MessageBox.Show("导入数据发生错误,是否继续?", "发生错误", messButton);
if (dr == DialogResult.OK)
{
continue;
}
else
{
break;
}
}
}
closeWaitForm();
}
catch (System.Data.OleDb.OleDbException ex)
{
showErrorMsg(ex.Message);
if (ex.Message.IndexOf("不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长") != -1)
{
return false;
}
return false;
}
return true;
}
protected virtual void clearOldData()
{
}
/// <summary>
/// 获取获得当前你选择的Excel Sheet的所有名字
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string[] GetExcelSheetNames(string filePath)
{
Microsoft.Office.Interop.Excel.ApplicationClass excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbooks wbs = excelApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook wb = wbs.Open(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
int count = wb.Worksheets.Count;
string[] names = new string[count];
for (int i = 1; i <= count; i++)
{
names[i - 1] = ((Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[i]).Name;
}
wb.Close(null, null, null);
excelApp.Quit();
wbs.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbs);
excelApp = null;
wbs = null;
wb = null;
return names;
}
/// <summary>
/// 处理具体数据
/// 将在各子form重写逻辑
/// </summary>
/// <param name="dr"></param>
protected virtual void FillDataToDs(DataRow dr) //string itemid, string itemplu, string itemName)
{
}
//导入导出Excel 注意的是及时的关闭Excel,不然占用进程很麻烦,我调试了大半天太弄好的
/// <summary>
/// 写入配置信息
/// </summary>
protected void WriteConfig(string key, string value)
{
//ShowText("正在写入配置文件!请稍等....");
string appConfigPath = Application.StartupPath + "\\" + Application.ProductName + ".exe";
ConfigurationOperator co = new ConfigurationOperator(appConfigPath, utils.ConfigType.ExeConfig);
co.AddAppSetting(key, value);
co.Save();
}
protected string Encrypt(string password)
{
Byte[] clearBytes = new UnicodeEncoding().GetBytes(password);
Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
return BitConverter.ToString(hashedBytes);
}
protected string getConfigValue(string key)
{
return System.Configuration.ConfigurationManager.AppSettings[key];
}
public void readPrinters()
{
pickConstants.PRINTER_NAME_A4 = getConfigValue("A4Printer");
pickConstants.PRINTER_NAME_CODE = getConfigValue("CodePrinter");
}
/// <summary>
/// GET请求与获取结果
/// </summary>
public static string HttpGet(string Url, string postDataStr)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (string.IsNullOrEmpty(postDataStr) ? "" : "?") + postDataStr);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
request.Timeout = 10000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
}