2023-05-23 16:13:17 +08:00
|
|
|
|
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();
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
debug(message);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
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);
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
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)
|
|
|
|
|
{
|
2023-05-23 23:33:56 +08:00
|
|
|
|
_stockState = Utils.Util.convertEnumToDic(typeof(enumStockLocationStatus));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
_outOrderType = Utils.Util.convertEnumToDic(typeof(enumOrderType));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Dictionary<int, string> _plateLevel = null;
|
|
|
|
|
protected Dictionary<int, string> plateLevel
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (_plateStatus == null)
|
|
|
|
|
{
|
|
|
|
|
_plateStatus = Utils.Util.convertEnumToDic(typeof(enumPlateLevel));
|
|
|
|
|
}
|
|
|
|
|
return _plateStatus;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
private Dictionary<int, string> _taskType = null;
|
|
|
|
|
protected Dictionary<int, string> taskType
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (_taskType == null)
|
|
|
|
|
{
|
2023-09-04 22:41:19 +08:00
|
|
|
|
_taskType = Utils.Util.convertEnumToDic(typeof(EnumFlowTaskType));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
DataSet ExcelDS = new DataSet();
|
|
|
|
|
DataSet lblSelectDs = new DataSet();
|
|
|
|
|
|
|
|
|
|
// <summary>
|
|
|
|
|
/// 导出按钮
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
2023-11-21 19:18:23 +08:00
|
|
|
|
protected void exportExcel(GridView gvSelectedItems,string strTitle="报表")
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
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 = "导出文件保存路径";
|
|
|
|
|
//默认的文件名
|
2023-11-21 19:18:23 +08:00
|
|
|
|
saveFileDialog.FileName = this.Text + strTitle + " - " + MMSDate.ToString("yyyyMMdd");
|
2023-05-23 16:13:17 +08:00
|
|
|
|
//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;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public void addCheckField(DataTable dt,bool isChecked=true)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
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++)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
dt.Rows[i][CheckBoxField] = isChecked;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("grid view clicked! fieldName is {0}, currentStatus is {1}",fieldName,currentStatus));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
bool result = false;
|
|
|
|
|
if (gridView != null)
|
|
|
|
|
{
|
|
|
|
|
if (dtGv.Rows.Count == 0)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("dtGv.Rows.Count == 0, return"));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
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;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format(" nm is " +nm));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("gridView.GetSelectedCells() == null or length is 0"));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
// return true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// string nm = gridView.GetSelectedRows()[0].;
|
|
|
|
|
int selectRowHandle = gridView.FocusedRowHandle;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format(" gridView.FocusedRowHandle : '{0}', info.RowHandle {1}", gridView.FocusedRowHandle,info.RowHandle));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
if (gridView.FocusedRowHandle != info.RowHandle)
|
|
|
|
|
{
|
|
|
|
|
gridView.FocusedRowHandle = info.RowHandle >0? info.RowHandle: gridView.FocusedRowHandle;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// info.RowHandle
|
|
|
|
|
if (info.Column != null)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("info.Column.FieldName :'{0}' , fieldName :'{1}', nm :'{2}'", info.Column.FieldName, fieldName, nm));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
else {
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format(" gridView.GetSelectedCells()[0].Column.FieldName :'{0}'", nm));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (info.Column != null && info.Column.FieldName == fieldName || nm == fieldName)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("is point in header info.InColumn? '{0}'", info.InColumn));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
if (info.InColumn) //全选、全不选
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < dtGv.Rows.Count; i++)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("SetRowCellValue: row {0},fieldName{1},status{2}", i, fieldName, !currentStatus));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
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;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("info.RowHandle:{0},dtGv.Rows.Count:{1} ", info.RowHandle, dtGv.Rows.Count));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
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);
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// debug(string.Format("value of point cell:'{0}'",b));
|
2023-05-23 16:13:17 +08:00
|
|
|
|
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];
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|