ldj/winform/基础资料/基类/BasicRibbonForm.cs

1635 lines
54 KiB
C#
Raw 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 DeiNiu.wms.Data.Model;
using DevExpress.XtraGrid.Views.Grid;
using DeiNiu.Utils;
using System.Data.OleDb;
using System.Speech.Synthesis;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DeiNiu.wms.win.portalService;
using DeiNiu.wms.win.utils;
using DevExpress.XtraGrid.Columns;
namespace DeiNiu.wms.win
{
public partial class BasicRibbonForm : FormBase //DevExpress.XtraBars.Ribbon.RibbonForm
{
public BasicRibbonForm()
{
InitializeComponent();
}
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 string code;
public override string ToString()
{
return value;
}
}
protected void initialComboBoxs(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)
{
Colitem c = new Colitem();
c.key = 0;
c.value = "请选择";
col.Add(c);
}
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 initialComboBoxs(ComboBoxEdit combo, Dictionary<string, string> dic, bool isForQuery = true)
{
combo.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
combo.Properties.Items.Clear();
ComboBoxItemCollection col = combo.Properties.Items;
col.BeginUpdate();
if (isForQuery)
{
Colitem c = new Colitem();
c.code = "";
c.value = "请选择";
col.Add(c);
}
try
{
foreach (string key in dic.Keys)
{
Colitem c = new Colitem();
c.code = key;
c.value = dic[key];
col.Add(c);
}
}
finally
{
col.EndUpdate();
}
combo.SelectedIndex = 0;
}
protected void initialComboBoxs(ComboBoxEdit combo, DataRow[] drss,bool isForQuery =true,string title ="请选择")
{
combo.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
combo.Properties.Items.Clear();
List<Node> nds = new List<Node>();
foreach (DataRow dr in drss)
{
nds.Add(new Node(dr));
}
ComboBoxItemCollection coll = combo.Properties.Items;
coll.BeginUpdate();
if (isForQuery)
{
coll.Add(title);
}
try
{
foreach (Node nd in nds)
{
coll.Add(nd);
}
}
finally
{
coll.EndUpdate();
}
combo.SelectedIndex = 0;
}
protected void initialComboBoxs(ComboBoxEdit combo, string[] items, string title ="")
{
combo.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
combo.Properties.Items.Clear();
ComboBoxItemCollection coll = combo.Properties.Items;
coll.BeginUpdate();
if (title.Length == 0)
{
// coll.Add("全部");
}
else
{
coll.Add(title);
}
try
{
foreach (string nd in items)
{
coll.Add(nd);
}
}
finally
{
coll.EndUpdate();
}
combo.SelectedIndex = 0;
}
protected void setDatePiker(DateEdit deFrom,DateEdit deTo)
{
deFrom.EditValue = DateTime.Now.AddDays(-1 * WmsConstants.DAYS_QUERY_BEFORE).Date.AddHours(23).AddMinutes(59);
deTo.EditValue = DateTime.Now.Date.AddDays(0).AddHours(23).AddMinutes(59);
}
protected void showErrorMsg(Exception e, string message=null)
{
closeWaitForm();
string title = e==null || e.InnerException == null ? "出错啦" : e.InnerException.Message;
if (e != null)
{
LogHelper.WriteLog(this.GetType(), e);
message = string.IsNullOrEmpty(message) ? title+ "\n" + e.Message : message + ": " + title+ "\n" + e.Message ;
}
showErrorMsg(message);
/* if (message.Equals(WmsConstants.WCF_UN_AUTH_MESSAGE))
{
LoginInfo.UserId = -1;
if (this.ParentForm != null)
{
((main)this.ParentForm).showLogin();
}
else if (this is main)
{
((main)this).showLogin();
}
return;
}
MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error);
*/
}
protected void showErrorMsg( string message)
{
closeWaitForm();
if (message.Equals(WmsConstants.WCF_UN_AUTH_MESSAGE))
{
LoginInfo.UserId = -1;
if (this.ParentForm != null)
{
((main)this.ParentForm).showLogin();
}
else if (this is main)
{
((main)this).showLogin();
}
return;
}
else
{
foreach (string s in WmsConstants.EXCEPTION_IGNORE_LST)
{
if (message.Contains(s))
{
LogHelper.WriteLog(this.GetType(), message);
return;
}
}
// showErrorMsg("操作未成功,麻烦再做一次吧");
}
MessageBox.Show(message, "出错了", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
protected void showInfoMsg(string message)
{
closeWaitForm();
MessageBox.Show(message, "通知", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
protected void setupGridView(GridView gridview, bool canMultiSelect,bool showGroupPannel = true,bool canFocus = true)
{
gridview.OptionsView.EnableAppearanceEvenRow = true; //偶数行颜色变化
gridview.OptionsView.EnableAppearanceOddRow = false; //奇数行颜色变化
gridview.OptionsSelection.MultiSelect = true;// 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 speak(string msg){
SpeechSynthesizer voice = new SpeechSynthesizer(); //创建语音实例
voice.Rate = -1; //设置语速,[-10,10]
voice.Volume = 100; //设置音量,[0,100]
voice.SpeakAsync(msg); //播放指定的字符串,这是异步朗读
}
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);
}
private Dictionary<int, string> _pickDetailStatus = null;
private Dictionary<int, string> _pickRequestStatus = null;
private Dictionary<int, string> _pickStatus = null;
private Dictionary<int, string> _locVolType = null;
private Dictionary<int, string> _pickOrNot = null;
private Dictionary<int, string> _inRequestStatus = null;
private Dictionary<int, string> _whType = null;
private Dictionary<int, string> _outRequestType = null;
private Dictionary<int, string> _stockRecordtype = null;
protected Dictionary<int, string> enumStockRecordtype
{
get
{
if (_stockRecordtype == null)
{
_stockRecordtype = Utils.Util.convertEnumToDic(typeof(enumStockRecordType));
}
return _stockRecordtype;
}
}
private Dictionary<int, string> _receiveDetailStatus = null;
protected Dictionary<int, string> enumReceiveDetailStatus
{
get
{
if (_receiveDetailStatus == null)
{
_receiveDetailStatus = Utils.Util.convertEnumToDic(typeof(enumReceiveStockDetailStatus));
}
return _receiveDetailStatus;
}
}
private Dictionary<int, string> _colors = null;
protected Dictionary<int, string> enumColors
{
get
{
if (_colors == null)
{
_colors = Utils.Util.convertEnumToDic(typeof(enumColors));
}
return _colors;
}
}
private Dictionary<int, string> _viechleTranStatus = null;
protected Dictionary<int, string> viechleTranStatus
{
get
{
if (_viechleTranStatus == null)
{
_viechleTranStatus = Utils.Util.convertEnumToDic(typeof(enumViechleTransStatus));
}
return _viechleTranStatus;
}
}
private Dictionary<int, string> _viechleStatus = null;
protected Dictionary<int, string> viechleStatus
{
get
{
if (_viechleStatus == null)
{
_viechleStatus = Utils.Util.convertEnumToDic(typeof(enumViechleStatus));
}
return _viechleStatus;
}
}
private Dictionary<int, string> _goodsCollection = null;
protected Dictionary<int, string> goodsCollection
{
get
{
if (_goodsCollection == null)
{
_goodsCollection = Utils.Util.convertEnumToDic(typeof(enumGoodsCollectionStatus));
}
return _goodsCollection;
}
}
private Dictionary<int, string> _pickPriority = null;
protected Dictionary<int, string> pickPriority
{
get
{
if (_pickPriority == null)
{
_pickPriority = Utils.Util.convertEnumToDic(typeof(enumPickPriority));
}
return _pickPriority;
}
}
private Dictionary<int, string> _mainTainType = null;
protected Dictionary<int, string> mainTainType
{
get
{
if (_mainTainType == null)
{
_mainTainType = Utils.Util.convertEnumToDic(typeof(enumMainType));
}
return _mainTainType;
}
}
private Dictionary<int, string> _stockState = null;
protected Dictionary<int, string> stockState
{
get
{
if (_stockState == null)
{
_stockState = Utils.Util.convertEnumToDic(typeof(enumStockLocationStatus));
}
return _stockState;
}
}
private Dictionary<int, string> _maintainResult = null;
protected Dictionary<int, string> maintainResult
{
get
{
if (_maintainResult == null)
{
_maintainResult = Utils.Util.convertEnumToDic(typeof(enumStockMaintainResult));
}
return _maintainResult;
}
}
private Dictionary<int, string> _stkdiff = null;
protected Dictionary<int, string> stkdiff
{
get
{
if (_stkdiff == null)
{
_stkdiff = Utils.Util.convertEnumToDic(typeof(enumStockDiff));
}
return _stkdiff;
}
}
/*
private Dictionary<int, string> _whVlo = null;
protected Dictionary<int, string> whVlo
{
get
{
if (_whVlo == null)
{
_whVlo = Utils.Util.convertEnumToDic(typeof(enumWhVlo));
}
return _whVlo;
}
}*/
private Dictionary<int, string> _enumPandianStatus = null;
protected Dictionary<int, string> enmPandianStatus
{
get
{
if (_enumPandianStatus == null)
{
_enumPandianStatus = Utils.Util.convertEnumToDic(typeof(enumPandianStatus));
}
return _enumPandianStatus;
}
}
private Dictionary<int, string> _customerTypes = null;
protected Dictionary<int, string> customerTypes
{
get
{
if (_customerTypes == null)
{
_customerTypes = Utils.Util.convertEnumToDic(typeof(enumCustomerType));
}
return _customerTypes;
}
}
private Dictionary<int, string> _enumPandianType = null;
protected Dictionary<int, string> enumPandianType
{
get
{
if (_enumPandianType == null)
{
_enumPandianType = Utils.Util.convertEnumToDic(typeof(enumPandianType));
}
return _enumPandianType;
}
}
private Dictionary<int, string> _tranStatus = null;
protected Dictionary<int, string> tranStatus
{
get
{
if (_tranStatus == null)
{
_tranStatus = Utils.Util.convertEnumToDic(typeof(enumTranStatus));
}
return _tranStatus;
}
}
private Dictionary<int, string> _tranType = null;
protected Dictionary<int, string> tranType
{
get
{
if (_tranType == null)
{
_tranType = Utils.Util.convertEnumToDic(typeof(enumTranType));
}
return _tranType;
}
}
private Dictionary<int, string> _dicValueType = null;
protected Dictionary<int, string> dicValueType
{
get
{
if (_dicValueType == null)
{
_dicValueType = Utils.Util.convertEnumToDic(typeof(enumDicValueType));
}
return _dicValueType;
}
}
protected Dictionary<int, string> outStoreType
{
get
{
if (_outRequestType == null)
{
_outRequestType = Utils.Util.convertEnumToDic(typeof(enumOutStoreType));
}
return _outRequestType;
}
}
Dictionary<int, string> _outOrderType;
protected Dictionary<int, string> outOrderType
{
get
{
if (_outOrderType == null)
{
_outOrderType = Utils.Util.convertEnumToDic(typeof(enumOutOrderType));
}
return _outOrderType;
}
}
protected Dictionary<int, string> whType
{
get
{
if (_whType == null)
{
_whType = Utils.Util.convertEnumToDic(typeof(enumWhType));
}
return _whType;
}
}
protected Dictionary<int, string> inRequestStatus
{
get
{
if (_inRequestStatus == null)
{
_inRequestStatus = Utils.Util.convertEnumToDic(typeof(enumInStockOrderStatus));
}
return _inRequestStatus;
}
}
protected Dictionary<int, string> pickOrNot
{
get
{
if (_pickOrNot == null)
{
_pickOrNot = Utils.Util.convertEnumToDic(typeof(enumPickState));
}
return _pickOrNot;
}
}
protected Dictionary<int, string> locVolType
{
get
{
if (_locVolType == null)
{
_locVolType = Utils.Util.convertEnumToDic(typeof(enumWhLocVol));
}
return _locVolType;
}
}
private Dictionary<int, string> _enumLotAttType = null;
protected Dictionary<int, string> enLotAttType
{
get
{
if (_enumLotAttType == null)
{
_enumLotAttType = Utils.Util.convertEnumToDic(typeof(enumLotAttType));
}
return _enumLotAttType;
}
}
private Dictionary<int, string> _stockInLocationStatus = null;
protected Dictionary<int, string> stockInLocationStatus
{
get
{
if (_stockInLocationStatus == null)
{
_stockInLocationStatus = Utils.Util.convertEnumToDic(typeof(enumInStockDetailStatus));
}
return _stockInLocationStatus;
}
}
Dictionary<int, string> _waveRuleType;
protected Dictionary<int, string> waveRuleType
{
get
{
if (_waveRuleType == null)
{
_waveRuleType = Utils.Util.convertEnumToDic(typeof(enumWaveRuleType));
}
return _waveRuleType;
}
}
protected Dictionary<int, string> pickStatus
{
get
{
if (_pickStatus == null)
{
_pickStatus = Utils.Util.convertEnumToDic(typeof(enumOutStockPickStatus));
}
return _pickStatus;
}
}
protected Dictionary<int, string> pickDetailStatus
{
get
{
if (_pickDetailStatus == null)
{
_pickDetailStatus = Utils.Util.convertEnumToDic(typeof(enumOutStockDetailStatus));
}
return _pickDetailStatus;
}
}
protected Dictionary<int, string> pickRequestStatus
{
get
{
if (_pickRequestStatus == null)
{
_pickRequestStatus = Utils.Util.convertEnumToDic(typeof(enumOutStockRequestStatus));
}
return _pickRequestStatus;
}
}
private Dictionary<int, string> _plateStatus = null;
protected Dictionary<int, string> plateStatus
{
get
{
if (_plateStatus == null)
{
_plateStatus = Utils.Util.convertEnumToDic(typeof(enumPlateStatus));
}
return _plateStatus;
}
}
private Dictionary<int, string> _taskType = null;
protected Dictionary<int, string> taskType
{
get
{
if (_taskType == null)
{
_taskType = Utils.Util.convertEnumToDic(typeof(enumFlowTaskType));
}
return _taskType;
}
}
private Dictionary<int, string> _taskStatus = null;
protected Dictionary<int, string> taskStatus
{
get
{
if (_taskStatus == null)
{
_taskStatus = Utils.Util.convertEnumToDic(typeof(enumFlowTaskStatus));
}
return _taskStatus;
}
}
private Dictionary<int, string> _orderType = null;
protected Dictionary<int, string> orderType
{
get
{
if (_orderType == null)
{
_orderType = Utils.Util.convertEnumToDic(typeof(enumOrderType));
}
return _orderType;
}
}
private Dictionary<int, string> _orderStatus = null;
protected Dictionary<int, string> orderStatus
{
get
{
if (_orderStatus == null)
{
_orderStatus = Utils.Util.convertEnumToDic(typeof(enumOrderStatus));
}
return _orderStatus;
}
}
private Dictionary<int, string> _waveStatus = null;
protected Dictionary<int, string> waveStatus
{
get
{
if (_waveStatus == null)
{
_waveStatus = Utils.Util.convertEnumToDic(typeof(enumWaveStatus));
}
return _waveStatus;
}
}
private Dictionary<int, string> _enumWhLocBatch = null;
protected Dictionary<int, string> enWhLocBatch
{
get
{
if (_enumWhLocBatch == null)
{
_enumWhLocBatch = Utils.Util.convertEnumToDic(typeof(enumWhLocStoreType));
}
return _enumWhLocBatch;
}
}
Login lg ;
protected void showLogin()
{
if (lg == null)
{
lg = new Login();
}
IntPtr devHwnd = WinAPI.FindWindow(null, "得牛仓储管理系统");
if (devHwnd != IntPtr.Zero)
{
lg.Focus();
return;
}
if (!lg.Focused)
{
lg.ShowDialog();
}
// createMenus();
}
protected bool checkPermission(string permision)
{
if (WmsConstants.SPECIAL_AUTHS != null)
{
return WmsConstants.SPECIAL_AUTHS.Contains(permision);
}
return false;
}
protected int checkPermission(string userId,string passwd,string permision)
{
int id= pclient.validUser(userId, Util.Encrypt(passwd));
bool rt = pclient.haveSpecialAuth(userId, Util.Encrypt(passwd), permision);
closeClient();
return rt? id:-1;
}
protected int validUser(string userId, string passwd)
{
int id = pclient.validUser(userId, Util.Encrypt(passwd));
closeClient();
return id;
}
protected bool isSuper()
{
return checkPermission(WmsConstants.SPECIAL_AUTHS_SUPER);
}
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.Trim();
}
//private string[] owners;
private Dictionary<string,string> owners;
protected Dictionary<string,string> getOwners(bool isforce=false)
{
if (owners == null || isforce)
{
DataTable dt = Park.getOwners(isforce);
owners = new Dictionary<string,string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
owners.Add( dt.Rows[i]["ownerCode"].ToString(), dt.Rows[i]["ownerName"].ToString());
}
}
return owners;
}
private Dictionary<string, string> venders;
protected Dictionary<string, string> getVenders(bool isforce = false)
{
if (venders == null || isforce)
{
DataTable dt = Park.getOwners(isforce);
owners = new Dictionary<string, string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
owners.Add(dt.Rows[i]["ownerCode"].ToString(), dt.Rows[i]["ownerName"].ToString());
}
}
return owners;
}
/*
#region EXCEL导出
/// <summary>
/// EXCEL导出
/// </summary>
/// <param name="saveFileName">文件名称</param>
/// <param name="gridView">待导出的gridView数据</param>
public void ExportToExcel(string saveFileName, DevExpress.XtraGrid.Views.Base.BaseView gridView)
{
try
{
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "导出Excel(*.xls)|*.xls";
saveDialog.FileName = saveFileName + DateTime.Now.ToString("yyyyMMddHHmmss");
if (saveDialog.ShowDialog() != DialogResult.OK)
return;
saveFileName = saveDialog.FileName;
Cursor.Current = Cursors.WaitCursor;
DevExpress.XtraExport.IExportXlsProvider provider = new DevExpress.XtraExport.ExportXlsProvider(saveFileName);
this.FindForm().Refresh();
DevExpress.XtraGrid.Export.BaseExportLink link = gridView.CreateExportLink(provider);
link.ExportAll = true;
link.Progress += new DevExpress.XtraGrid.Export.ProgressEventHandler(Export_Progress);//进度条事件
link.ExportTo(true);
provider.Dispose();
link.Progress -= new DevExpress.XtraGrid.Export.ProgressEventHandler(Export_Progress);
Cursor.Current = Cursors.Default;
showErrorMsg("导出成功!");
}
catch (Exception ex)
{
showErrorMsg("导出失败!");
}
}
/// <summary>
/// 进度条事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Export_Progress(object sender, DevExpress.XtraGrid.Export.ProgressEventArgs e)
{
if (e.Phase == DevExpress.XtraGrid.Export.ExportPhase.Link)
{
// progressBarControl1.Position = e.Position;
this.Update();
}
}
#endregion
*/
string strTitle = "报表";
DataSet ExcelDS = new DataSet();
DataSet lblSelectDs = new DataSet();
// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void exportExcel(GridView gvSelectedItems)
{
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 = strTitle + " - " + 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>
private void importExcel(GridView gvSelectedItems)
{
try
{
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 (EcxelToGridView(strName, gvSelectedItems))
{
showErrorMsg("数据导入成功" );
//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 EcxelToGridView(string filePath, DevExpress.XtraGrid.Views.Grid.GridView dgv)
{
bool isVailed = false;
string itemid = string.Empty;
string itemplu = string.Empty;
string itemName = string.Empty;
//根据路径打开一个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();
for (int j = 0; j < ds.Tables["table1"].Rows.Count; j++)
{
if (ds.Tables["table1"].Rows[j]["商品id"].ToString().Trim() != string.Empty)
itemid = ds.Tables["table1"].Rows[j]["商品id"].ToString().Trim();
if (ds.Tables["table1"].Rows[j]["商品货号"].ToString().Trim() != string.Empty)
itemplu = ds.Tables["table1"].Rows[j]["商品货号"].ToString().Trim();
else
itemplu = " ";
if (ds.Tables["table1"].Rows[j]["商品名称"].ToString().Trim() != string.Empty)
itemName = ds.Tables["table1"].Rows[j]["商品名称"].ToString().Trim();
//把数据填充到ds中
FillDataToDs(itemid, itemplu, itemName);
isVailed = true;
}
}
catch (System.Data.OleDb.OleDbException ex)
{
if (ex.Message.IndexOf("不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长") != -1)
{
return false;
}
return false;
}
return true;
}
/// <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;
}
private void FillDataToDs(string itemid, string itemplu, string itemName)
{
DataRow[] rows = lblSelectDs.Tables["MSTM150_ITEM"].Select(string.Format("MSTM150_ITEMID='{0}'", itemid));
if (rows.Length == 0)
{
if (itemid.Trim() != string.Empty && itemplu.Trim() != string.Empty && itemName != string.Empty)
{
DataRow dr;
dr = lblSelectDs.Tables["MSTM150_ITEM"].NewRow();
// dr[MSTM150_ITEM.MSTM150_ITEMID] = itemid;
dr["MSTM151_PLUCD"] = itemplu;
dr["MSTM150_ITEMCNM"] = itemName;
dr["CheckRemove"] = "0";
lblSelectDs.Tables["MSTM150_ITEM"].Rows.Add(dr);
}
//else if (itemid.Trim() == string.Empty)
//{
// string st = "导入的商品id不允许为空";
// sb.Append(st);
// sb.Append("\r\n");
//}
//else if (itemplu.Trim() == string.Empty)
//{
// string st = "导入的商品编码不允许为空";
// sb.Append(st);
// sb.Append("\r\n");
//}
//else if (itemName.Trim() == string.Empty)
//{
// string st = "导入的商品名称不允许为空";
// sb.Append(st);
// sb.Append("\r\n");
//}
}
else if(rows.Length>0)
{
ExcelDS.Tables["MSTM150_ITEM"].ImportRow(rows[0]);
}
}
//------------------------------------------------checkbox------------------------------
#region GridControl checkbox
/// <summary>
/// 是否选中
/// </summary>
public const string CheckBoxField = "选择";
private static bool chkState = false;
public static bool ChkState
{
get { return BasicRibbonForm.chkState; }
set { BasicRibbonForm.chkState = value; }
}
//复选框列名称
private static string chkFileName = "选择";
protected string chkKey = "";
protected GridColumn colChk = new GridColumn() { Caption = CheckBoxField, Visible = true, FieldName = CheckBoxField };
//复选框列宽
private static int chkWidth = 30;
//GridView
public static DevExpress.XtraGrid.Views.Grid.GridView GView = null;
public void addCheckField(DataTable dt)
{
if (!dt.Columns.Contains(CheckBoxField))
{
dt.Columns.Add(CheckBoxField, System.Type.GetType("System.Boolean"));
dt.Columns[CheckBoxField].DefaultValue = Boolean.TrueString;
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i][CheckBoxField] = true;
}
calculateSelectedValue();
}
}
private DevExpress.XtraGrid.Views.Grid.GridView gView
{
get
{
if (GView == null)
{
GView = new DevExpress.XtraGrid.Views.Grid.GridView();
}
return GView;
}
set
{
this.gView = value;
}
}
public DataTable DtGv = null;
private DataTable dtGv
{
get
{
if (DtGv == null)
{
DtGv = new DataTable();
}
return DtGv;
}
set
{
this.DtGv = value;
}
}
public void GridCheckEdit(DevExpress.XtraGrid.Views.Grid.GridView gv , string checkFileName, int checkWidth)
{
if (gv != null)
{
chkFileName = checkFileName;
chkWidth = checkWidth;
GView = gv;
//不显示复选框的列标题
gv.Columns[chkFileName].OptionsColumn.ShowCaption = false;
DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryItemCheckEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
//复选框的形状 gv.Columns[chkFileName].ColumnEdit 实例是 repositoryItemCheckEdit1
repositoryItemCheckEdit1.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Standard;
////复选框加载的状态 实心 空心 空心打勾
repositoryItemCheckEdit1.NullStyle = DevExpress.XtraEditors.Controls.StyleIndeterminate.Unchecked;
gv.Columns[chkFileName].ColumnEdit = repositoryItemCheckEdit1;
//点击事件
gv.Click += new System.EventHandler(gv_Click);
//画列头CheckEdit
gv.CustomDrawColumnHeader += new DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventHandler(gv_CustomDrawColumnHeader);
//gv.DataSourceChanged += new EventHandler(gv_DataSourceChanged);
}
}
private void gv_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
{
if (e.Column != null && e.Column.FieldName == chkFileName)
{
e.Info.InnerElements.Clear();
e.Painter.DrawObject(e.Info);
DrawCheckBox(e, chkState);
e.Handled = true;
}
}
private static void gv_DataSourceChanged(object sender, EventArgs e)
{
DevExpress.XtraGrid.Columns.GridColumn column = GView.Columns.ColumnByFieldName(chkFileName);
if (column != null)
{
// column.Width = chkWidth;
// column.OptionsColumn.ShowCaption = false;
// column.ColumnEdit = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
GView.Columns[chkFileName].OptionsColumn.ShowCaption = false;
DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryItemCheckEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
//复选框的形状 gv.Columns[chkFileName].ColumnEdit 实例是 repositoryItemCheckEdit1
repositoryItemCheckEdit1.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Standard;
////复选框加载的状态 实心 空心 空心打勾
repositoryItemCheckEdit1.NullStyle = DevExpress.XtraEditors.Controls.StyleIndeterminate.Unchecked;
GView.Columns[chkFileName].ColumnEdit = repositoryItemCheckEdit1;
}
}
private void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk)
{
DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryCheck = e.Column.ColumnEdit as DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit;
if (repositoryCheck != null)
{
System.Drawing.Graphics g = e.Graphics;
System.Drawing.Rectangle r = e.Bounds;
DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info;
DevExpress.XtraEditors.Drawing.CheckEditPainter painter;
DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;
info = repositoryCheck.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
painter = repositoryCheck.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;
info.EditValue = chk;
info.Bounds = r;
info.CalcViewInfo(g);
args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
painter.Draw(args);
args.Cache.Dispose();
}
}
private void gv_Click(object sender, EventArgs e)
{
try
{
if (ClickGridCheckBox(GView, chkFileName, chkState))
{
chkState = !chkState;
}
}
catch (Exception er)
{
}
}
private bool ClickGridCheckBox(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName, bool currentStatus)
{
debug(string.Format("grid view clicked! fieldName is {0}, currentStatus is {1}",fieldName,currentStatus));
bool result = false;
if (gridView != null)
{
if (dtGv.Rows.Count == 0)
{
debug(string.Format("dtGv.Rows.Count == 0, return"));
return true;
}
//禁止排序
gridView.ClearSorting();
gridView.PostEditor();
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo info;
System.Drawing.Point pt = gridView.GridControl.PointToClient(Control.MousePosition);
info = gridView.CalcHitInfo(pt);
//info.InColumn 在列标题上
/*
if (gridView.GetSelectedCells() == null
|| gridView.GetSelectedCells().Length== 0)
{
debug(string.Format("gridView.GetSelectedCells() == null or length is 0, return true"));
return true;
}*/
string nm = "";
if (gridView.GetSelectedCells() != null
&& gridView.GetSelectedCells().Length> 0)
{
nm = gridView.GetSelectedCells()[0].Column.FieldName;
debug(string.Format(" nm is " +nm));
}
else
{
debug(string.Format("gridView.GetSelectedCells() == null or length is 0"));
// return true;
}
// string nm = gridView.GetSelectedRows()[0].;
int selectRowHandle = gridView.FocusedRowHandle;
debug(string.Format(" gridView.FocusedRowHandle : '{0}', info.RowHandle {1}", gridView.FocusedRowHandle,info.RowHandle));
if (gridView.FocusedRowHandle != info.RowHandle)
{
gridView.FocusedRowHandle = info.RowHandle >0? info.RowHandle: gridView.FocusedRowHandle;
}
// info.RowHandle
if (info.Column != null)
{
debug(string.Format("info.Column.FieldName :'{0}' , fieldName :'{1}', nm :'{2}'", info.Column.FieldName, fieldName, nm));
}
else {
debug(string.Format(" gridView.GetSelectedCells()[0].Column.FieldName :'{0}'", nm));
}
if (info.Column != null && info.Column.FieldName == fieldName || nm == fieldName)
{
debug(string.Format("is point in header info.InColumn? '{0}'", info.InColumn));
if (info.InColumn) //全选、全不选
{
for (int i = 0; i < dtGv.Rows.Count; i++)
{
debug(string.Format("SetRowCellValue: row {0},fieldName{1},status{2}", i, fieldName, !currentStatus));
gridView.SetRowCellValue(i, fieldName, !currentStatus);
dtGv.Rows[i][fieldName] = !currentStatus;
}
return true;
}
else
{
// DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryCheck = info.Column.ColumnEdit as DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit;
// info.RowHandle = selectRowHandle;
debug(string.Format("info.RowHandle:{0},dtGv.Rows.Count:{1} ", info.RowHandle, dtGv.Rows.Count));
if (info.RowHandle >= 0 && info.RowHandle < dtGv.Rows.Count)
{
string v = dtGv.Rows[info.RowHandle][fieldName].ToString();
bool b = String.IsNullOrEmpty(v) ? false : Convert.ToBoolean(v);
debug(string.Format("value of point cell:'{0}'",b));
dtGv.Rows[info.RowHandle][fieldName] = !b;
gridView.SetRowCellValue(info.RowHandle, fieldName, !b);
return true;
}
}
calculateSelectedValue();
return true;
}
}
return result;
}
#endregion
protected virtual void calculateSelectedValue()
{
}
/// <summary>
/// 写入配置信息
/// </summary>
protected void writeConfig(string key, string value)
{
//ShowText("正在写入配置文件!请稍等....");
string appConfigPath = Application.StartupPath + "\\" + Application.ProductName + ".exe";
ConfigurationOperator co = new ConfigurationOperator(appConfigPath, ConfigType.ExeConfig);
co.AddAppSetting(key, value);
co.Save();
}
protected string getConfigValue(string key)
{
return System.Configuration.ConfigurationManager.AppSettings[key];
}
}
}