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 DeiNiu.wms.win.utils; using System.Threading; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraEditors.DXErrorProvider; using DeiNiu.wms.Data.Model; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DeiNiu.Utils; namespace DeiNiu.wms.win { public partial class LocationmgrForm : BasicRibbonForm { lWmslocation lgt = new lWmslocation(); private string fieldName = Wmslocation.fields.locationId.ToString(); private string fieldGoodType = Wmslocation.fields.whGoodsType.ToString(); private string lastQuery = ""; private DataTable dt; private int selectedRowIndex = -1; private bool isAdding = true; private Locs locs ; public LocationmgrForm() { InitializeComponent(); initialControls(); // loadData(); } #region initialControls private void initialControls() { initialComboBoxes(); initialPagerControls(); initialDataGrid(); initialQueryInput(); swithOperationType(); setValidationRule(); this.lcgSetup.Expanded = false; } private void initialComboBoxes() { //initial combobox of port this.comport.Properties.TextEditStyle = TextEditStyles.DisableTextEditor; ComboBoxItemCollection coll = comport.Properties.Items; coll.BeginUpdate(); try { for(int i =1;i<=20;i++) { coll.Add(i); } } finally { coll.EndUpdate(); } comport.SelectedIndex = 0; //initial comboboxedits with dic Node[] nds = { }; DataRow[] drs = Park.getDictionary(false).Select("flag >0" ); foreach (DataRow dr in drs) { int flag = Convert.ToInt32(dr["flag"].ToString()); int parentId = Convert.ToInt32(dr["id"].ToString()); DataRow[] drss = Park.getDictionary(false).Select("parentId =" + parentId); switch (flag){ case 1001: initialComboBoxe(this.comGoodType, drss); //商品类型 break; case 2001: initialComboBoxe(this.comWarehouse,drss);//库房 break; case 2002: initialComboBoxe(this.comWhType, drss);//库房类型 break; case 2003: initialComboBoxe(this.comVolume, drss);//库房容积 break; case 2004: initialComboBoxe(this.comLocationVolume, drss);//货位容积 break; case 2005: initialComboBoxe(this.comPart, drss);//分区 break; } } } private void setValidationRule() { dxValidationProvider.SetValidationRule(comWarehouse, ValidationRules.notEmptyValidationRule); //txtGoodType.Properties.MaxLength = 40; //txtGoodDesc.Properties.MaxLength = 250; //textEdit1.Properties.MaxLength = txtGoodType.Properties.MaxLength; } private void initialQueryInput() { } private void initialPagerControls() { pager1.MaximumSize = new Size(0, 20); pager1.EventPaging += new DeiNiu.Controls.pager.EventPagingHandler(pager_EventPaging); #region DataGridView与Pager控件绑定 this.pager1.PageCurrent = 1;//当前页为第一页 pager1.PageSize = 200;//每页行数 this.pager1.Bind();//绑定 #endregion } private void initialDataGrid() { this.gridView1.OptionsBehavior.AutoPopulateColumns = false; this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus; this.gridView1.OptionsBehavior.Editable = false; this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false; this.gridView1.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView1_FocusedRowObjectChanged); this.gridView1.DataSourceChanged += new System.EventHandler(this.gridView1_DataSourceChanged); //show line number this.gridView1.IndicatorWidth = 40; this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView1_CustomDrawRowIndicator); } //显示行的序号 private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e) { if (e.Info.IsRowIndicator && e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString(); } } private void initialDataGridColumns() { // gridviewGoodsType.PopulateColumns(); gridView1.Columns.Clear(); // gridviewGoodsType.Columns.Remove(gridviewGoodsType.Columns["DealerPrice"]); GridColumn myCol0 = new GridColumn() { Caption = "ID", Visible = true, FieldName = "id" }; myCol0.Visible = false; this.gridView1.Columns.Add(myCol0); GridColumn myCol1 = new GridColumn() { Caption = "货位编码", Visible = true, FieldName = fieldName ,MinWidth =100 }; GridColumn myCol3 = new GridColumn() { Caption = "长", Visible = true, FieldName = Wmslocation.fields.length.ToString(), MaxWidth = 80 }; GridColumn myCol4 = new GridColumn() { Caption = "宽", Visible = true, FieldName = Wmslocation.fields.width.ToString(), MaxWidth = 80 }; GridColumn myCol5 = new GridColumn() { Caption = "高", Visible = true, FieldName = Wmslocation.fields.height.ToString(), MaxWidth = 80 }; GridColumn myCol12 = new GridColumn() { Caption = "重", Visible = true, FieldName = Wmslocation.fields.weight.ToString(), MaxWidth = 80 }; GridColumn myCol2 = new GridColumn() { Caption = "货物类别", Visible = true, FieldName = Wmslocation.fields.goodsType.ToString() + "Name" }; GridColumn myCol6 = new GridColumn() { Caption = "库房分类", Visible = true, FieldName = Wmslocation.fields.whType.ToString() + "Name" }; GridColumn myCol7 = new GridColumn() { Caption = "库房容积", Visible = true, FieldName = Wmslocation.fields.whVolume.ToString() + "Name" }; GridColumn myCol8 = new GridColumn() { Caption = "电子标签", Visible = true, FieldName = Wmslocation.fields.elabId.ToString() }; GridColumn myCol9 = new GridColumn() { Caption = "标签货位", Visible = true, FieldName = Wmslocation.fields.elabAddress.ToString() }; GridColumn myCol10 = new GridColumn() { Caption = "端口", Visible = true, FieldName = Wmslocation.fields.port.ToString() ,MinWidth=20}; GridColumn myCol11 = new GridColumn() { Caption = "分区", Visible = true, FieldName = Wmslocation.fields.part.ToString() + "Name" }; this.gridView1.Columns.Add(myCol1); this.gridView1.Columns.Add(myCol8); this.gridView1.Columns.Add(myCol9); this.gridView1.Columns.Add(myCol10); this.gridView1.Columns.Add(myCol2); this.gridView1.Columns.Add(myCol6); this.gridView1.Columns.Add(myCol7); this.gridView1.Columns.Add(myCol3); this.gridView1.Columns.Add(myCol4); this.gridView1.Columns.Add(myCol5); this.gridView1.Columns.Add(myCol12); this.gridView1.Columns.Add(myCol11); // gridView1.OptionsView.ColumnAutoWidth = false; gridView1.BestFitColumns(); gridView1.Focus(); //自动列宽 //gridView1.OptionsView.ColumnAutoWidth = false; //this.gridView1.BestFitColumns(); //this.gridView1.Columns[2].MinWidth = 500; //this.gridView1.Columns[1].BestFit(); //for (int I = 0; I < gridView1.Columns.Count; I++) //{ // this.gridView1.Columns[I].BestFit() //} } #endregion /// /// loading data /// private int loadData() { //this.gridviewGoodsType.DataSource = lgt.GetAllActiveData().Tables[0].DefaultView; showWaitForm(); string query = this.comWarehouse.SelectedIndex <0? "" : Wmslocation.fields.warehouse.ToString() + "=#" + ((Node) this.comWarehouse.SelectedItem).ID + ";" + (txtChannelFrom.Text.Trim().Length == 0 ? "" : Wmslocation.fields.channel.ToString() + ">=#" + txtChannelFrom.Text + ";") + (txtChannelTo.Text.Trim().Length == 0 ? "" : Wmslocation.fields.channel.ToString() + "<=#" + txtChannelTo.Text + ";") + (txtShelfFrom.Text.Trim().Length == 0 ? "" : Wmslocation.fields.shelf.ToString() + ">=#" + txtShelfFrom.Text + ";") + (txtShelfTo.Text.Trim().Length == 0 ? "" : Wmslocation.fields.shelf.ToString() + "<=#" + txtShelfTo.Text + ";") + (txtLayerFrom.Text.Trim().Length == 0 ? "" : Wmslocation.fields.layer.ToString() + ">=#" + txtLayerFrom.Text.Trim() + ";") + (txtLayerTo.Text.Trim().Length == 0 ? "" : Wmslocation.fields.layer.ToString() + "<=#" + txtLayerTo.Text + ";") + (txtColumFrom.Text.Trim().Length == 0 ? "" : Wmslocation.fields.col.ToString() + ">=#" + txtColumFrom.Text + ";") + (txtColumTo.Text.Trim().Length == 0 ? "" : Wmslocation.fields.col.ToString() + "<=#" + txtColumTo.Text); this.pager1.PageCurrent = lastQuery.Equals(query) ? this.pager1.PageCurrent : 1; //根据查询条件的变化给pager赋值 int start = (pager1.PageSize * (pager1.PageCurrent - 1) + 1); int end = (pager1.PageSize * pager1.PageCurrent); lastQuery = query; DataSet ds = lgt.Query(Park.getDictionary(false), query, start, end); dt = ds.Tables[0]; int cnt = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString()); //dt = lgt.Query(query, start, end); //string.IsNullOrEmpty(query) ? lgt.GetGoodType.getAllData(start, end) : lgt.g; dt.PrimaryKey = new DataColumn[] { dt.Columns["ID"] }; this.gridControl1.DataSource = dt.DefaultView; initialDataGridColumns(); //update selected row index to the last updated one. if (lgt.getWmslocation.ID > 0) { DataRow dr = dt.Rows.Find(lgt.getWmslocation.ID); if (dr != null) { selectedRowIndex = dt.Rows.IndexOf(dr); } if (selectedRowIndex > 0 && dt.Rows.Count > selectedRowIndex) { // gridView1.SelectRow(selectedRowIndex); gridView1.FocusedRowHandle = selectedRowIndex; // gridView1.MakeRowVisible(selectedRowIndex); } //gridView1.FocusedRowHandle = selectedRowIndex; } closeWaitForm(); return cnt;// lgt.getRowCount(query); // return lgt.GetGoodType.QueryCount(); } /// /// 分页控件产生的事件 /// private int pager_EventPaging(DeiNiu.Controls.pager.EventPagingArg e) { selectedRowIndex = 0; //reset currentRowIndex return loadData(); } private void bindDetail() { } private void setDataBack() { } private bool validData() { bool isvalid = dxValidationProvider.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 (true) { MessageBox.Show("没有数据更新"); return; } Thread th = new Thread(new ThreadStart(this.updateLocations)); th.Start(); // btnSave.Enabled = false; } private void updateLocations() { showWaitForm(); //WaitFormService.Show(this); try { //update the goodtype setDataBack(); // lgt.GetGoodType.Update(); //get updated data query();// loadData(); } catch (Exception e) { MessageBox.Show(e.Message); } finally { // WaitFormService.Close(); closeWaitForm(); // btnSave.Enabled = true; } } private void gridView1_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e) { //clearInputs(); //int a = gridView1.FocusedRowHandle ; //if (a < 0 || gridView1.GetSelectedRows().Length ==0) //{ // return; //} // int selectedHandle; //selectedRowIndex = this.gridView1.GetSelectedRows()[0]; ////MessageBox.Show(this.gridView1.GetRowCellValue(selectedHandle, "id").ToString()); //if (selectedRowIndex < 0) //{ // return; //} //if (isAdding) //{ // return; //} // txtGoodType.Text = this.gridView1.GetRowCellValue(selectedRowIndex, fieldName).ToString(); // txtGoodDesc.Text = this.gridView1.GetRowCellValue(selectedRowIndex, fieldDesc).ToString(); } private void clearInputs() { } private bool getCurrentObject() { if (selectedRowIndex < 0 || dt.Rows.Count <= selectedRowIndex) { MessageBox.Show("请在列表里选择数据"); return false; } DataRow currentRow = dt.Rows[selectedRowIndex]; lgt.getWmslocation.getModel(currentRow); return true; } private void gridView1_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) { } private void gridView1_DataSourceChanged(object sender, EventArgs e) { if (selectedRowIndex > 0 && dt.Rows.Count > selectedRowIndex) { gridView1.FocusedRowHandle = selectedRowIndex; gridView1.MakeRowVisible(selectedRowIndex); } } private void btnDelete_Click(object sender, EventArgs e) { //if (!getCurrentObject()) //{ // return; //} //MessageBoxButtons messButton = MessageBoxButtons.OKCancel; //DialogResult dr = MessageBox.Show(String.Format("确定要删除 {0} 吗?",lgt.GetGoodType.goodsName), "删除记录", messButton); //if (dr == DialogResult.OK) //{ // lgt.GetGoodType.Delete() ; // lgt.Initialize(); // query();//loadData(); //} } protected void query() { pager1.Bind(); } private void queryGoodType() { showWaitForm(); try { query();// loadData(); } catch (Exception e) { MessageBox.Show(e.Message); } finally { // WaitFormService.Close(); closeWaitForm(); bbQuery.Enabled = true; } } private void textEdit1_Enter(object sender, EventArgs e) { //string query = txtQuery.Text.Trim(); //lgt.GetGoodType.QueryByName(query); loadData(); } private void txtQuery_KeyDown(object sender, KeyEventArgs e) { if (e.KeyValue == 13) { query(); } } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { swithOperationType(); } private void swithOperationType() { /* isAdding = tabControl1.SelectedIndex == 0; if (isAdding) { clearInputs(); } else { gridView1_FocusedRowObjectChanged(null, null); } btnNew.Enabled = isAdding; btnSave.Enabled = !isAdding; btnDelete.Enabled = !isAdding; }*/ } private void bbQuery_ItemClick(object sender, ItemClickEventArgs e) { //Thread th = new Thread(new ThreadStart(this.queryGoodType)); //th.Start(); this.bbQuery.Enabled = false; queryGoodType(); } private void bbCreateLocations_ItemClick(object sender, ItemClickEventArgs e) { if (!validNewLocations()) { return; } setLocs(); //Thread th = new Thread(new ThreadStart(this.newLocations)); //th.Start(); this.bbCreateLocations.Enabled = false; newLocations(); } private void newLocations() { showWaitForm(); try { lgt.addLocations(locs); query();// loadData(); // initialize and clear object and inputs, prepare for adding more. // lgt.initialize(); // clearInputs(); } catch (Exception e) { MessageBox.Show(e.Message); } finally { // WaitFormService.Close(); closeWaitForm(); this.bbCreateLocations.Enabled = true; } } private void setLocs() { locs = new Locs(); locs.warehouse = ((Node)comWarehouse.SelectedItem).ID; locs.channel1 = Convert.ToInt32(txtChannelFrom.Text); locs.channel2 = Convert.ToInt32(txtChannelTo.Text); locs.shelf1 = Convert.ToInt32(this.txtShelfFrom.Text); locs.shelf2 = Convert.ToInt32(txtShelfTo.Text); locs.layer1 = Convert.ToInt32(this.txtLayerFrom.Text); locs.layer2 = Convert.ToInt32(txtLayerTo.Text); locs.col1 = Convert.ToInt32(this.txtColumFrom.Text); locs.col2 = Convert.ToInt32(txtColumTo.Text); locs.height = txtHeight.Text.Length > 0 ? Convert.ToDecimal(txtHeight.Text) :0; locs.width = txtWidth.Text.Length > 0 ? Convert.ToDecimal(txtWidth.Text) : 0; locs.length = txtLength.Text.Length > 0 ? Convert.ToDecimal(txtLength.Text) : 0; locs.weight = txtWeight.Text.Length > 0 ? Convert.ToDecimal(txtWeight.Text) : 0; locs.elecol = Convert.ToInt32(this.txtLabelColum.Text); locs.elelayer = Convert.ToInt32(this.txtLabelLayer.Text); locs.eleid1 = Convert.ToInt32(this.txtLabelFrom.Text); // locs.eleid2 = Convert.ToInt32(this.txtLabelTo.Text); locs.port = this.comport.SelectedIndex + 1; locs.whType = ((Node)this.comWhType.SelectedItem).ID; // locs.whGoodsType = ((Node)this.comw.SelectedItem).ID; locs.goodsType = ((Node)this.comGoodType.SelectedItem).ID; locs.whVolume= ((Node)this.comVolume.SelectedItem).ID; locs.part = ((Node)this.comPart.SelectedItem).ID; locs.operater = Park.currentUser.GetEmployee.ID; locs.warehouseName = ((Node)comWarehouse.SelectedItem).name; } private bool validNewLocations() { return true; } private void comWarehouse_Properties_CustomDisplayText(object sender, CustomDisplayTextEventArgs e) { } } }