DeviceManager/DeviceRepairAndOptimization/Pages/Maintain/dlgAccessoriesEdit.cs
2024-06-04 17:25:13 +08:00

260 lines
9.6 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 DevExpress.XtraBars;
using DevExpress.XtraBars.ToolbarForm;
using DevExpress.XtraEditors;
using DeviceRepair.Models;
using DeviceRepairAndOptimization.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace DeviceRepairAndOptimization.Pages.Maintain
{
public partial class dlgAccessoriesEdit : ToolbarForm
{
public List<DeviceWarrantyRequestAccessoriesInfo> CurrentAccessories = null;
DeviceWarrantyRequestAccessoriesInfo CurrentAccessoriesInfoModel = null;
int m_SelectedCurrentRowIndex = 0;
public dlgAccessoriesEdit(List<DeviceWarrantyRequestAccessoriesInfo> currentAccessories = null)
{
InitializeComponent();
CurrentAccessories = currentAccessories ?? new List<DeviceWarrantyRequestAccessoriesInfo>();
this.Load += DlgAccessoriesEdit_Load;
}
private void DlgAccessoriesEdit_Load(object sender, EventArgs ee)
{
GridViewInitialize(this.gridView1);
/// 自增长行号
gridView1.CustomDrawRowIndicator += (s, e) =>
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
e.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
}
};
/// 修改字段标题
gridView1.CustomDrawColumnHeader += (s, e) =>
{
(new Action<DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs>(BaseControl.GridControlExtend.CustomDrawColumnHeader)).Invoke(e);
};
/// 单元格点击
gridView1.RowCellClick += (s, e) =>
{
if (e.Button == MouseButtons.Right)
{
e.Handled = true;
return;
}
if (e.Column.Caption == "Selection")
{
if (this.m_SelectedCurrentRowIndex == e.RowHandle && this.gridView1.IsRowSelected(e.RowHandle))
this.gridView1.UnselectRow(e.RowHandle);
}
};
/// 表格选中行更改
gridView1.FocusedRowChanged += (s, e) =>
{
try
{
if (e.FocusedRowHandle >= 0)
{
m_SelectedCurrentRowIndex = e.FocusedRowHandle;
CurrentAccessoriesInfoModel = gridView1.GetRow(e.FocusedRowHandle) as DeviceWarrantyRequestAccessoriesInfo;
#region
if (gridView1.SelectedRowsCount > 0)
{
for (int i = 0; i < this.gridView1.RowCount; i++)
{
if (this.gridView1.IsRowSelected(i) && this.gridView1.FocusedRowHandle.ToString().Equals(i.ToString()) == false)
{
this.gridView1.UnselectRow(i);
}
}
}
this.gridView1.SelectRow(e.FocusedRowHandle);
#endregion
}
else
{
CurrentAccessoriesInfoModel = null;
}
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
};
if (CurrentAccessories == null)
CurrentAccessories = new List<DeviceWarrantyRequestAccessoriesInfo>();
else
{
gridControl1.DataSource = CurrentAccessories;
gridView1.BestFitColumns();
}
}
/// <summary>
/// 行选择模式,且全部只读
/// </summary>
/// <param name="view"></param>
void GridViewInitialize(DevExpress.XtraGrid.Views.Grid.GridView view)
{
// 关闭列头右键菜单
view.OptionsMenu.EnableColumnMenu = false;
view.OptionsBehavior.Editable = false;
view.OptionsBehavior.ReadOnly = true;
view.OptionsSelection.EnableAppearanceFocusedCell = false;
view.OptionsScrollAnnotations.ShowSelectedRows = DevExpress.Utils.DefaultBoolean.False;
foreach (DevExpress.XtraGrid.Columns.GridColumn item in view.Columns)
{
item.OptionsColumn.AllowEdit = false;
item.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.True;
item.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
item.OptionsColumn.AllowShowHide = false;
}
view.BestFitColumns();
}
/// <summary>
/// 添加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_AddItem_ItemClick(object sender, ItemClickEventArgs e)
{
try
{
using (dlgAccessoriesLst dlg = new dlgAccessoriesLst())
{
if (dlg.ShowDialog() == DialogResult.OK)
{
splashScreenManager1.ShowWaitForm();
if (CurrentAccessories.Any(x => x.FieldID == dlg.CurrentAccessories.FieldID))
{
throw new Exception("当前配件已存在!");
}
CurrentAccessories.Add(dlg.CurrentAccessories);
gridControl1.DataSource = CurrentAccessories;
gridView1.BestFitColumns();
splashScreenManager1.TryCloseWait();
}
}
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 删除配件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_DeleteItem_ItemClick(object sender, ItemClickEventArgs e)
{
try
{
if (CurrentAccessoriesInfoModel == null || !CurrentAccessories.Any(x => x.FieldID == CurrentAccessoriesInfoModel.FieldID))
{
throw new Exception("请选择要删除的配件行!");
}
CurrentAccessories.Remove(CurrentAccessoriesInfoModel);
gridControl1.DataSource = CurrentAccessories;
gridView1.BestFitColumns();
if ((CurrentAccessories?.Count ?? 0) > 0)
CurrentAccessoriesInfoModel = gridView1.GetRow(0) as DeviceWarrantyRequestAccessoriesInfo;
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 修改配件数量
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_EditItem_ItemClick(object sender, ItemClickEventArgs e)
{
try
{
if (CurrentAccessoriesInfoModel == null || !CurrentAccessories.Any(x => x.FieldID == CurrentAccessoriesInfoModel.FieldID))
{
throw new Exception("请选择要修改的配件行!");
}
XtraInputBoxArgs args = new XtraInputBoxArgs { Prompt = "请输入配件的数量:", Caption = "配件添加", DefaultResponse = 1 };
args.Buttons = new DialogResult[] { DialogResult.OK, DialogResult.Cancel };
args.DefaultButtonIndex = (int)DialogResult.Cancel;
// 声明默认返回值
DialogResult DiaResult = DialogResult.None;
args.Showing += (a, b) =>
{
//选中ok按钮将返回值变量改变为ok。
b.Buttons[DialogResult.OK].Click += (c, d) => { DiaResult = DialogResult.OK; };
};
// 显示对话框
int Count = XtraInputBox.Show<int>(args);
// 判断点击的按钮
if (DiaResult == DialogResult.None)
return;
if (Count > 0)
{
CurrentAccessoriesInfoModel.AccessoriesCount = Count;
gridControl1.DataSource = CurrentAccessories;
gridView1.BestFitColumns();
}
else
{
throw new Exception("配件的数量必须大于零!");
}
gridControl1.DataSource = CurrentAccessories;
gridView1.BestFitColumns();
}
catch (Exception ex)
{
string Error = ex.Message;
if (Error.Equals("值对于 Int32 太大或太小。"))
Error = "输入的数量值不正确!";
XtraMessageBoxHelper.Error(Error);
}
}
/// <summary>
/// 提交到列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_SaveAccessories_ItemClick(object sender, ItemClickEventArgs e)
{
this.DialogResult = DialogResult.OK;
}
}
}