banboshi_V1/halftoneproject-master/Code/FrmClassesSingle.cs
2023-10-31 13:19:29 +08:00

252 lines
9.9 KiB
C#
Raw Permalink 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 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;
}
}
}
}