ldj/winform/基础资料/字典/DictionaryForm.cs

824 lines
25 KiB
C#

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.XtraGrid.Views.Base;
//using DeiNiu.wms.Logical;
using DeiNiu.wms.Data;
using DevExpress.XtraGrid.Columns;
using System.Threading;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraEditors.DXErrorProvider;
using DeiNiu.wms.Data.Model;
using DeiNiu.wms.win.ServiceReferenceNodes;
using DeiNiu.Utils;
using DevExpress.XtraEditors.Controls;
namespace DeiNiu.wms.win
{
public partial class DictionaryForm : BasicRibbonForm
{
ServiceReferenceNodes.NodeClient client{
get { return Park.client; }
}
wcfNode wnode = new wcfNode();
// lNode lgt = new lNode();
private string fieldName = Node.fields.name.ToString();
private string fieldDesc =Node.fields.description.ToString();
private string lastQuery = "";
private DataTable dt;
//private int selectedNodeValue =-1;
private bool isAdding = true;
private int parentId = 0;
int lastEditId =-1;
int lastParent = -1; //last deleted 's parent id
DevExpress.XtraTreeList.Nodes.TreeListNode parentNode;
public DictionaryForm()
{
InitializeComponent();
initialControls();
query();// queryWithNewThread();
// This line of code is generated by Data Source Configuration Wizard
loadDesks();
}
#region initialControls
private void initialControls()
{
initialTreelist();
initialQueryInput();
swithOperationType();
setValidationRule();
txtParent.Properties.ReadOnly = true;
comType.ReadOnly = true;
txtID.Properties.ReadOnly = true;
this.txtFlag.ReadOnly = !checkPermission(WmsConstants.SPECIAL_AUTHS_DIC_DELETE);
// swSys.Enabled = checkPermission(WmsConstants.SPECIAL_AUTHS_SUPER);
initialComboBoxes();
}
private void initialComboBoxes()
{
//initial combobox of port
initialComboBoxs(comType, dicValueType, false);
this.comType.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
this.comType.SelectedIndex = 0;
}
private void setValidationRule()
{
dxValidationProvider1.ValidationMode = ValidationMode.Auto;
dxValidationProvider1.SetValidationRule(txtDicName, ValidationRules.notEmptyValidationRule);
txtDicName.Properties.MaxLength = 40;
txtGoodDesc.Properties.MaxLength = 250;
textEdit1.Properties.MaxLength = txtDicName.Properties.MaxLength;
// txtFlag.Properties.MaxLength = 5;
ConditionValidationRule rangeValidationRule = new ConditionValidationRule();
rangeValidationRule.ConditionOperator = ConditionOperator.Between;
rangeValidationRule.Value1 = 1;
rangeValidationRule.Value2 = 10000;
rangeValidationRule.ErrorText = String.Format("{0} - {1} 之间任意一数字!", 1000, 9999);
rangeValidationRule.ErrorType = ErrorType.Critical;
// dxValidationProvider.SetValidationRule(txtFlag, rangeValidationRule);
// dxValidationProvider.SetValidationRule(txtFlag, ValidationRules.getNumberRangeValidationRule(0,10000));
txtFlag.Text = "0";
}
private void initialTreelist()
{
//this.treeList1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
//treeList1.OptionsView.ShowHorzLines = false;
//treeList1.OptionsView.ShowVertLines = false;
treeList1.FocusedNodeChanged += new DevExpress.XtraTreeList.FocusedNodeChangedEventHandler( treeList1_FocusedNodeChanged);
treeList1.KeyFieldName = "id";
treeList1.ParentFieldName = "parentid";
treeList1.OptionsBehavior.Editable = false;
//searchLookUpEdit1.Properties.ValueMember = "id";
//searchLookUpEdit1.Properties.DisplayMember = fieldName;
//searchLookUpEdit1.Properties.NullText = "系统";
}
#endregion
private void buildTreelist()
{
Node nd = new Node();
//dt = nd.Query().Tables[0];
//treeList1.DataSource = dt;
string query = txtQuery.Text.Trim();
lastQuery = query;
try
{
dt = client.Query(query, 0, 0).Tables[0]; ;
client.Close();
}
catch (Exception e)
{
showErrorMsg(e,e.Message);
}
treeList1.DataSource = dt;
//DataView dv = nd.Query().Tables[0].DefaultView;
//dv.RowFilter = "parentid =0";
//searchLookUpEdit1.Properties.DataSource =dv ;
setFocusedNode();
}
private void setFocusedNode()
{
foreach (DevExpress.XtraTreeList.Nodes.TreeListNode node in treeList1.Nodes)
{
// if (lastEditId >-1)
{
if (Convert.ToInt32(node.GetValue("id").ToString()) == lastEditId)
{
treeList1.FocusedNode = node;
return;
}
if (traverseNodes(node))
{
return;
}
}
//if (Convert.ToInt32(node.GetValue("id").ToString()) == parentId)
//{
// node.ExpandAll();
//}
// node.ExpandAll();
}
}
private bool traverseNodes(DevExpress.XtraTreeList.Nodes.TreeListNode parentNode)
{
foreach (DevExpress.XtraTreeList.Nodes.TreeListNode node in parentNode.Nodes)
{
if (Convert.ToInt32( node.GetValue("id").ToString()) == lastEditId) //set focus to last add/updated
{
treeList1.FocusedNode = node;
return true;
}
if (Convert.ToInt32(node.GetValue("id").ToString()) == lastParent) //set focus for last delete
{
// node.ExpandAll();
node.Expanded = true; // expand only sub nodes.
if (node.Nodes.Count > 0)
{
treeList1.FocusedNode = node.Nodes[0];
}
else
{
treeList1.FocusedNode = node;
}
}
traverseNodes(node);
}
return false;
}
private void initialQueryInput()
{
this.txtQuery.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtQuery_KeyDown);
}
/// <summary>
/// loading data
/// </summary>
private void loadData()
{
//this.gridviewGoodsType.DataSource = lgt.GetAllActiveData().Tables[0].DefaultView;
string query = txtQuery.Text.Trim();
lastQuery = query;
try
{
DataSet ds = client.Query(query, 0, 0);
client.Close();
dt = ds.Tables[0];
}
catch (Exception e)
{
showErrorMsg(e.Message);
}
}
private void btnNew_Click(object sender, EventArgs e)
{
/*
if (lgt.getNode.ID > 0)
{
lgt.Initialize();
clearInputs();
txtGoodType.Focus();
validData();
return;
}
*/
// begin to create new goodType
if (!validData())
{
return;
}
// lgt.initialize();
setDataBack();
//Thread th = new Thread(new ThreadStart(this.newGoodType));
//th.Start();
btnNew.Enabled = false;
newDic();
}
private void newDic()
{
showWaitForm();
try
{
wnode = client.newWcfNode(wnode); applyDic();
client.Close();
lastEditId = wnode.id;
// lastEditId = lgt.getNode.ID;
query();// loadData();
// initialize and clear object and inputs, prepare for adding more.
//lgt.initialize();
clearInputs();
}
catch (Exception e)
{
showErrorMsg(e.Message);
}
finally
{
// WaitFormService.Close();
closeWaitForm();
btnNew.Enabled = true;
}
}
//private void bindDetail()
//{
// //txtGoodDesc.Text = lgt.getNode.description;
// //txtGoodType.Text = lgt.getNode.name;
// txtGoodDesc.Text = wnode.description;
// txtDicName.Text = wnode.name;
// txtValue.Text = wnode.value;
// sw.IsOn = wnode.isOn;
// comType.SelectedIndex = wnode.valueType;
//}
private void setDataBack()
{
setParentInfo();
wnode.parentid = wnode.parentid > 0 ? wnode.parentid : parentId;
wnode.description = txtGoodDesc.Text.Trim();
wnode.name = txtDicName.Text.Trim();
wnode.isOn = sw.IsOn;
wnode.value = txtValue.Text.Trim();
wnode.valueType = comType.SelectedIndex;
wnode.isSystem = swSys.IsOn;
if((enumDicValueType) comType.SelectedIndex == enumDicValueType.) {
wnode.value = sw.IsOn ? "开" : "关";
}
//lgt.getNode.parentid = lgt.getNode.parentid> 0 ? lgt.getNode.parentid : parentId;
//lgt.getNode.description = txtGoodDesc.Text.Trim();
//lgt.getNode.name = txtGoodType.Text.Trim();
// lgt.getNode.operater = Park.currentUser.GetEmployee.ID;
if (txtFlag.Text.Trim().Length > 0)
{
try
{
int flag = Convert.ToInt16(txtFlag.Text.ToString());
wnode.flag = flag;
}
catch(Exception er)
{
showErrorMsg(er.Message);
txtFlag.Focus();
}
}
}
void setParentInfo()
{
if (treeList1.FocusedNode == null)
{
parentId = 0;
return;
}
btnNew.Enabled = false;
if (parentNode == null || parentNode.ParentNode == null)
{ // current is level 1,2
parentId = Convert.ToInt32(this.treeList1.FocusedNode.GetValue("id").ToString());
this.txtParent.Text = this.treeList1.FocusedNode.GetValue("name").ToString();
if (checkPermission(WmsConstants.SPECIAL_AUTHS_DIC_DELETE))
{
comType.ReadOnly = false;
btnNew.Enabled = true;
}
}
else if (parentNode != null)
{
if (parentNode.ParentNode != null)
{ //level 3, as max level
parentId = Convert.ToInt32(this.treeList1.FocusedNode.GetValue("parentid").ToString());
this.txtParent.Text = parentNode.GetValue("name").ToString();
comType.ReadOnly = true;
btnNew.Enabled = true;
comType.SelectedIndex =string.IsNullOrEmpty(parentNode.GetValue("valueType").ToString())? 0 : Convert.ToInt32( parentNode.GetValue("valueType").ToString());
}
}
}
private bool validData()
{
enumDicValueType type = (enumDicValueType)comType.SelectedIndex;
try
{
switch (type)
{
case enumDicValueType.:
Convert.ToDecimal(txtValue.Text.Trim());
break;
case enumDicValueType.:
Convert.ToInt32(txtValue.Text.Trim());
break;
}
}
catch
{
showErrorMsg("请输入正确的数字");
txtValue.SelectAll();
txtValue.Focus();
return false;
}
bool isvalid = dxValidationProvider1.Validate();
// MessageBox.Show("goodtype is " + txtGoodType.Text +", is valid ? " + isvalid);
return isvalid;
//String gdtype = txtGoodType.Text.Trim();
//if (gdtype.Length == 0)
//{
// dxValidationProvider.Validate();
// return false;
//}
//return true;
}
private void btnSave_Click(object sender, EventArgs e)
{
//if (!getCurrentObject())
//{
// return;
//}
if (!validData())
{
return;
}
if (wnode.name.Equals(txtDicName.Text.Trim())
&& wnode.description.Equals(txtGoodDesc.Text.Trim())
&& wnode.flag == Convert.ToInt32(txtFlag.Text.Trim())
&& wnode.isOn == sw.IsOn
&& wnode.isSystem == swSys.IsOn
&& wnode.value.Equals(txtValue.Text.Trim())
&& wnode.valueType.Equals(comType.SelectedIndex)
)
{
MessageBox.Show("没有数据需要更新");
return;
}
//Thread th = new Thread(new ThreadStart(this.updateGoodType));
//th.Start();
updateDic();
}
private void updateDic()
{
if (!checkPermission(WmsConstants.SPECIAL_AUTHS_DIC_UPDATE))
{
showErrorMsg(null,"权限不足!");
return;
}
if (swSys.IsOn && !isSuper())
{
showErrorMsg(null, "权限不足!");
return;
}
btnSave.Enabled = false;
showWaitForm();
//WaitFormService.Show(this);
try
{
//update the goodtype
setDataBack();
// lgt.getNode.Update();
// lgt.getNode.Update();
client.updateWcfNode(wnode);
applyDic();
client.Close();
lastEditId = wnode.id;
//get updated data
query();// loadData();
}
catch (Exception e)
{
showErrorMsg(e,e.Message);
getCurrentObject();
}
finally
{
// WaitFormService.Close();
closeWaitForm();
btnSave.Enabled = true;
}
}
void applyDic()
{
if (chkApply.Checked)
{
Park.getDictionary(true);
client.applyDicChanges();
Park.loadConfig();
Park.getDictionary(true);
}
}
private void clearInputs()
{
txtValue.Text = "";
// sw.IsOn = false;
// comType.SelectedIndex = 0;
txtDicName.Text = "";
txtGoodDesc.Text = "";
txtID.Text = "";
txtFlag.Text = "";
dxValidationProvider1.RemoveControlError(txtFlag);
dxValidationProvider1.RemoveControlError(txtDicName);
wnode = new wcfNode();
}
private bool getCurrentObject()
{
//if (selectedNodeValue < 0)// || dt.Rows.Count <= selectedNodeValue)
//{
// MessageBox.Show("请在列表里选择数据");
// return false;
//}
DataRowView drv = treeList1.GetDataRecordByNode(this.treeList1.FocusedNode) as DataRowView;
// lgt.getNode.getModel(drv.Row);
Node nd = new Node(drv.Row);
initialWcfNode(nd);
// lgt.initialize(drv.Row);
return true;
}
void initialWcfNode(Node nd)
{
wnode.id = nd.ID;
wnode.name = nd.name;
wnode.description = nd.description;
wnode.parentid = nd.parentid;
wnode.value = nd.value;
wnode.valueType = nd.valueType;
wnode.flag = nd.flag;
wnode.isSystem = nd.isSystem;
wnode.isOn = nd.isOn;
}
private void btnDelete_Click(object sender, EventArgs e)
{
if (!getCurrentObject())
{
return;
}
if (!checkPermission(WmsConstants.SPECIAL_AUTHS_DIC_DELETE))
{
showErrorMsg("权限不足!");
return;
}
if (swSys.IsOn && !isSuper())
{
showErrorMsg(null, "权限不足!");
return;
}
MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
DialogResult dr = MessageBox.Show(String.Format("确定要删除 {0} 吗?",wnode.name), "删除记录", messButton);
if (dr == DialogResult.OK)
{
parentId = Convert.ToInt32(treeList1.FocusedNode .GetValue("parentid").ToString());
try
{
client.deleteNode(wnode.id) ;
applyDic();
client.Close();
}
catch (Exception er)
{
showErrorMsg(er,er.Message);
return;
}
// lgt.initialize();
wnode = new wcfNode();
lastEditId = -1;
lastParent = parentId;
query();//loadData();
}
}
protected void query()
{
buildTreelist(); //bind tree
showAdminButtons();
}
private void showAdminButtons()
{
bool isShow = (checkPermission(WmsConstants.SPECIAL_AUTHS_DIC_DELETE));
btnRestDesk.Enabled = isShow;
btnPrintBox.Enabled = isShow;
}
private void btnQuery_Click(object sender, EventArgs e)
{
queryWithNewThread();
}
private void queryWithNewThread()
{
//Thread th = new Thread(new ThreadStart(this.queryGoodType));
//th.Start();
btnQuery.Enabled = false;
queryGoodType();
}
private void queryGoodType()
{
showWaitForm();
try
{
query();// loadData();
}
catch (Exception e)
{
showErrorMsg(e,e.Message);
}
finally
{
// WaitFormService.Close();
closeWaitForm();
btnQuery.Enabled = true;
}
}
private void txtQuery_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
query();
}
}
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
clearInputs();
DevExpress.XtraTreeList.Nodes.TreeListNode currentNode = treeList1.FocusedNode;
if (currentNode == null)
{
return;
}
parentNode = treeList1.FocusedNode.ParentNode;
if (parentNode == null) //set root expand
{
treeList1.FocusedNode.Expanded = true;
}
this.txtParent.Text = parentNode == null ? "" : parentNode.GetDisplayText("name");
setParentInfo();
// if (currentNode.Tag == null)
// {
//string a = currentNode.GetValue("id").ToString();
//selectedNodeValue = Convert.ToInt32(a);
//DataView dv = dt.DefaultView;
//dv.Sort = "id desc";
//DataRowView[] drs = dv.FindRows(selectedNodeValue);
//if (drs.Length > 0)
//{
// DataRow dr = drs[0].Row;
// lgt.getNode.getModel(dr);
// currentNode.Tag = lgt.getNode;
//}
// currentNode.Tag = lgt.getNode;
// }
getCurrentObject();
if (isAdding)
{
return;
}
//txtGoodType.Text = currentNode.GetDisplayText(fieldName);
//txtGoodDesc.Text = currentNode.GetDisplayText(fieldDesc);
txtDicName.Text =wnode.name;
txtGoodDesc.Text = wnode.description;
txtFlag.Text = wnode.flag + "";
txtID.Text = wnode.id > 0 ? wnode.id + "" : "";
txtValue.Text = wnode.value;
sw.IsOn = wnode.isOn;
swSys.IsOn = wnode.isSystem;
comType.SelectedIndex = wnode.valueType;
txtDicName.Enabled = !swSys.IsOn || swSys.IsOn && isSuper();
txtGoodDesc.Enabled = txtDicName.Enabled;
txtFlag.Enabled = txtDicName.Enabled;
txtValue.Enabled = txtDicName.Enabled;
sw.Enabled = txtDicName.Enabled;
// comType.SelectedIndex = wnode.valueType;
btnDelete.Enabled = treeList1.FocusedNode.Nodes.Count == 0;
setParentInfo();
}
private void DictionaryForm_FormClosing(object sender, FormClosingEventArgs e)
{
// client.Close();
}
private void comType_SelectedIndexChanged(object sender, EventArgs e)
{
lcBool.Visibility = comType.SelectedIndex ==(int)enumDicValueType. ? DevExpress.XtraLayout.Utils.LayoutVisibility.Always : DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
lcValue.Visibility = comType.SelectedIndex == (int)enumDicValueType. ? DevExpress.XtraLayout.Utils.LayoutVisibility.Never : DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
}
private void btnRestDesk_Click(object sender, EventArgs e)
{
using (ServiceReferenceSetup.SetupClient client = new ServiceReferenceSetup.SetupClient("BasicHttpBinding_ISetup", buildSvrAddress("Setup.svc")))
{
try
{
if (client.initialDesk())
{
MessageBox.Show("复合台初始化成功!");
}
}
catch (Exception er)
{
showErrorMsg(er, er.Message);
}
}
}
private void loadDesks()
{
using (ServiceReferenceSetup.SetupClient client = new ServiceReferenceSetup.SetupClient("BasicHttpBinding_ISetup", buildSvrAddress("Setup.svc")))
{
try
{
DataTable dt = client.getDesks();
List<string> desks = new List<string>();
foreach (DataRow dr in dt.Rows)
{
desks.Add(enumColors[Convert.ToInt16(dr["name"].ToString().Trim())]);
}
initialComboBoxs(this.comboxColors, desks.ToArray(), "全部");
}
catch (Exception er)
{
showErrorMsg(er, er.Message);
}
}
}
private void btnPrintBox_Click(object sender, EventArgs e)
{
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
swithOperationType();
}
private void swithOperationType()
{
isAdding = tabFuncs.SelectedTabPageIndex ==1;
if (isAdding)
{
clearInputs();
}
else
{
treeList1_FocusedNodeChanged(null, null);
}
btnNew.Enabled = isAdding;
btnSave.Enabled = !isAdding;
btnDelete.Enabled = !isAdding;
if (treeList1.FocusedNode != null)
{
btnDelete.Enabled = btnDelete.Enabled && treeList1.FocusedNode.Nodes.Count == 0;
}
}
private void tabbedControlGroup3_SelectedPageChanged(object sender, DevExpress.XtraLayout.LayoutTabPageChangedEventArgs e)
{
swithOperationType();
}
}
}