using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using BO.BO.Bill; using BO.Utils.BillRpc; namespace WeighAndGrading { public partial class AbnormalModifyForm : Form { List details; private DateTime mDate; GradeAndWeight_Detail mCurrentSlectItem; public AbnormalModifyForm(DateTime date) { InitializeComponent(); mDate = date; uDataGridView1.AutoGenerateColumns = false; } private void AbnormalModifyForm_Load(object sender, EventArgs e) { BindGridView(); AddKeyPad(); if (uDataGridView1.Rows.Count > 0) { uDataGridView1.Rows[0].Selected = true; var currentRow = uDataGridView1.Rows[0].DataBoundItem as GradeAndWeight_Detail; mCurrentSlectItem = currentRow; } } private void BindGridView() { details = LocalGradeAndWeightBL.GetLostWeightDetails(mDate); if (details.Any()) uDataGridView1.DataSource = details; } private void AddKeyPad() { for (var i = 1; i < 10; i++) { var btn = new Button() { Name = "_3" + i, Text = i.ToString(), Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; btn.Click += (sender, e) => { ModifyWeight(btn.Text); }; flpKeyPanel.Controls.Add(btn); } var zero = new Button() { Name = "_30", Text = "0", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; zero.Click += (sender, e) => { ModifyWeight(zero.Text); }; flpKeyPanel.Controls.Add(zero); var dian = new Button() { Name = "_40", Text = ".", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; dian.Click += (sender, e) => { ModifyWeight(dian.Text); }; flpKeyPanel.Controls.Add(dian); var back = new Button() { Name = "_3back", Text = "←", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; back.Click += (sender, e) => { ModifyWeight(back.Text); }; flpKeyPanel.Controls.Add(back); var clear = new Button() { Name = "_3clear", Text = "清空", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; clear.Click += (sender, e) => { ModifyWeight(clear.Text); }; flpKeyPanel.Controls.Add(clear); } // private decimal? lastWeght; private void ModifyWeight(string input) { if (mCurrentSlectItem == null) throw new Exception("请选择一条记录"); var destring = DecimalToString(mCurrentSlectItem.Weight); var value=GetAfterNumber(destring, input); mCurrentSlectItem.Weight = StringToDecimal(value); uDataGridView1.Refresh(); } decimal? StringToDecimal(string value) { if (string.IsNullOrWhiteSpace(value)) { return null; } value = value.Replace("..", "."); if (value.Length > 1) { var last = value.Substring(value.Length - 1); if (last == ".") { value += "0"; } } try { return decimal.Parse(value); } catch { return null; } } string DecimalToString(decimal? value) { if (value == null) { return ""; } try { var newvalue = value.ToString(); if (newvalue.Length > 2) { var lasttwo = newvalue.Substring(newvalue.Length - 2); if (lasttwo == ".0") { var intvalue = Convert.ToInt32(value); return intvalue.ToString() + "."; } } return value.ToString()+""; } catch { return value.ToString(); } } string GetAfterNumber(string oldValue, string input) { bool hasValue = !string.IsNullOrWhiteSpace(oldValue); switch (input) { case ".": if (hasValue) return (oldValue + "."); return null; case "0": if (hasValue) return (oldValue + "0"); return null; case "←": if (hasValue) { var s = oldValue.ToString(); s = s.Substring(0, s.Length - 1); if (string.IsNullOrEmpty(s)) return null; return (s); } return null; case "清空": return null; default: var sn = ""; if (hasValue) sn = oldValue.ToString(); sn += input; return (sn); } } private void button1_Click(object sender, EventArgs e) { foreach (GradeAndWeight_Detail detail in details.Where(x=>x.Weight.HasValue)) { detail.IsLostWeight = false; detail.Sync = false; LocalGradeAndWeightBL.Update(detail, "Weight", "IsLostWeight", "Sync"); } details = LocalGradeAndWeightBL.GetLostWeightDetails(mDate); uDataGridView1.Refresh(); MessageBox.Show("保存成功"); DialogResult=DialogResult.OK; Close(); } private void uDataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) return; var currentRow = uDataGridView1.CurrentRow.DataBoundItem as GradeAndWeight_Detail; mCurrentSlectItem = currentRow; } } }