252 lines
9.9 KiB
C#
252 lines
9.9 KiB
C#
using Models;
|
||
using SqlSugar;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace ProductionControl
|
||
{
|
||
public partial class FrmClassesSingle : Form
|
||
{
|
||
Service.ClassesService service = new Service.ClassesService();
|
||
List<Classes> lstClasses=new List<Classes>();
|
||
private int Tag;
|
||
ValType valType;
|
||
public FrmClassesSingle(int tag,string subject="类别设置", ValType _valType = ValType.字符串)
|
||
{
|
||
InitializeComponent();
|
||
this.Tag = tag;
|
||
this.Text = subject;
|
||
valType = _valType;
|
||
dataGridView2.AutoGenerateColumns = false;
|
||
//显示行号与列宽度自动调整
|
||
dataGridView2.RowHeadersVisible = true;
|
||
dataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
|
||
dataGridView2.RowPostPaint += (sender, e) =>
|
||
{
|
||
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView2, sender, e);
|
||
};
|
||
}
|
||
private void FrmClassesSingle_Load(object sender, EventArgs e)
|
||
{
|
||
initDataView();
|
||
}
|
||
|
||
private void FrmClassesSingle_FormClosing(object sender, FormClosingEventArgs e)
|
||
{
|
||
this.button1.Focus();
|
||
if (!dataGridView2.EndEdit())
|
||
{
|
||
e.Cancel = true;
|
||
return;
|
||
}
|
||
//if (!saveExit && MessageBox.Show($"确认修改已保存,是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
||
//{
|
||
// e.Cancel = true;
|
||
// return;
|
||
//}
|
||
}
|
||
private void initDataView()
|
||
{
|
||
//dataGridView2.Rows.Clear();
|
||
var exp1 = Expressionable.Create<Classes>()
|
||
.And(m=>m.Tag == Tag)
|
||
//.AndIF(dateTimePicker2.Checked, it => it.CreateTime < dateTimePicker2.Value)
|
||
.ToExpression();//注意 这一句 不能少
|
||
|
||
lstClasses = service.GetList(exp1).OrderBy(m => m.Order).ToList();
|
||
if(lstClasses.Count < 1)//wlq 大坑:这个因为如果绑定数据源【list】是不为null但长度是0的 ,一旦点击新增 后 点击行就会抛出 索引为-1的相关错误。这个微软不知道咋设计的
|
||
{
|
||
lstClasses.Insert(0,new Classes());
|
||
dataGridView2.DataSource = lstClasses;
|
||
dataGridView2.DataSource = null;
|
||
lstClasses.RemoveAt(0);
|
||
}
|
||
dataGridView2.DataSource = lstClasses;// new BindingSource(lstClasses, null);
|
||
//for(int i=0;i<lstClasses.Count;i++)
|
||
//{
|
||
// lstClasses[i].Order = i;
|
||
// dataGridView2.Rows.Add(lstClasses[i].Id, lstClasses[i].Order, lstClasses[i].Name, lstClasses[i].Name);
|
||
//}
|
||
}
|
||
#region private
|
||
private void reOrderProcess()
|
||
{
|
||
for (int i = 0; i < lstClasses.Count; i++)
|
||
lstClasses[i].Order = i;
|
||
}
|
||
private void refreshDataGridView()
|
||
{
|
||
dataGridView2.DataSource = null;
|
||
dataGridView2.DataSource = new BindingSource(lstClasses, null);
|
||
}
|
||
#endregion
|
||
private bool saveExit=false;
|
||
private void tsbtnSave_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (lstClasses.Where(m=>string.IsNullOrWhiteSpace(m.Name)).Count() > 0)
|
||
throw new Exception("请填写名称!");
|
||
|
||
bool result;
|
||
var lstInsert= lstClasses.Where(m => m.Id == 0).ToList();
|
||
if (lstInsert.Count > 0)
|
||
{
|
||
result = service.InsertRange(lstInsert);
|
||
if (!result)
|
||
throw new Exception("保存失败!");
|
||
}
|
||
var lstUpdate = lstClasses.Where(m => m.Id > 0).ToList();
|
||
if (lstUpdate.Count > 0)
|
||
{
|
||
result = service.UpdateRange(lstUpdate);
|
||
if (!result)
|
||
throw new Exception("保存失败!");
|
||
}
|
||
|
||
|
||
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
saveExit=true;
|
||
this.DialogResult = DialogResult.OK;
|
||
this.Close();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||
{
|
||
this.Close();
|
||
}
|
||
|
||
//
|
||
private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||
{
|
||
int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引
|
||
if (Index < this.dataGridView2.Rows.Count && this.dataGridView2.CurrentCell.Value.ToString() == "设置")
|
||
{
|
||
}
|
||
}
|
||
|
||
//单元格编译完成
|
||
private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
var id = (int)dataGridView2.Rows[e.RowIndex].Cells["colId"].Value;
|
||
var order = (int)dataGridView2.Rows[e.RowIndex].Cells["colOrder"].Value;
|
||
var preValue = dataGridView2.Rows[e.RowIndex].Cells["colPreName"].Value.ToString();
|
||
if (dataGridView2.Rows[e.RowIndex].Cells["colName"].Value == null || dataGridView2.Rows[e.RowIndex].Cells["colName"].Value.ToString() == "")
|
||
{
|
||
dataGridView2.Rows[e.RowIndex].Cells["colName"].Value = preValue;
|
||
return;
|
||
}
|
||
|
||
var value = dataGridView2.Rows[e.RowIndex].Cells["colName"].Value.ToString();
|
||
var count=lstClasses.Where(m =>m.Id!=id && m.Name == value.ToString()).Count();
|
||
if (count > 0)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(preValue))
|
||
dataGridView2.Rows[e.RowIndex].Cells["colName"].Value = preValue;
|
||
else
|
||
dataGridView2.Rows[e.RowIndex].Cells["colName"].Value = "";
|
||
throw new Exception("已存在相同名称!");
|
||
}
|
||
|
||
//
|
||
if (id==0)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(value))
|
||
return;
|
||
|
||
var m = lstClasses[lstClasses.Count - 1];
|
||
lstClasses[lstClasses.Count - 1] = service.InsertReturnEntity(lstClasses[lstClasses.Count - 1]);
|
||
//if (!result)
|
||
// throw new Exception("保存失败!");
|
||
}
|
||
else
|
||
{
|
||
if (value.Equals(preValue))//未修改
|
||
return;
|
||
|
||
bool result = service.InsertOrUpdate(lstClasses[e.RowIndex]);
|
||
if (!result)
|
||
throw new Exception("保存失败!");
|
||
}
|
||
dataGridView2.Rows[e.RowIndex].Cells["colPreName"].Value = dataGridView2.Rows[e.RowIndex].Cells["colName"].Value;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
|
||
private void tsbtnNew_Click(object sender, EventArgs e)
|
||
{
|
||
if(dataGridView2.EndEdit())
|
||
{
|
||
//int index=dataGridView2.Rows.Add();
|
||
if(lstClasses.Count<1 || lstClasses.Where(m => m.Id == 0).Count() < 1)
|
||
{
|
||
var model = new Classes()
|
||
{
|
||
Tag = this.Tag,
|
||
Name = "",
|
||
Order = lstClasses.Count ,
|
||
CreateUserCode = Config.loginUser.Code,
|
||
ModifyUserCode = Config.loginUser.Code,
|
||
};
|
||
lstClasses.Add(model);
|
||
dataGridView2.DataSource = null;
|
||
dataGridView2.DataSource = lstClasses;
|
||
dataGridView2.Rows[dataGridView2.Rows.Count - 1].Selected = true;
|
||
dataGridView2.CurrentCell = dataGridView2.Rows[dataGridView2.Rows.Count- 1].Cells["colName"];
|
||
this.dataGridView2.BeginEdit(true);
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
private void tsbtnDel_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (!dataGridView2.EndEdit()) return;
|
||
if (dataGridView2.SelectedRows.Count < 1)
|
||
return;
|
||
|
||
int index = dataGridView2.SelectedRows[0].Index;
|
||
if (lstClasses[index].Id >0)
|
||
{
|
||
if (!service.DeleteById(lstClasses[index].Id))
|
||
throw new Exception("删除失败,此项可能已被使用!");
|
||
}
|
||
this.initDataView();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
private void dataGridView2_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
|
||
{
|
||
//var list = ((BindingSource)dataGridView2.DataSource).DataSource as List<Order>;
|
||
for (int i = 0; i < dataGridView2.Rows.Count; i++)
|
||
{
|
||
dataGridView2.Rows[i].Cells["colPreName"].Value = dataGridView2.Rows[i].Cells["colName"].Value;
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
}
|