/// <summary> /// 标准件编码生成 /// </summary> private void StandardCodingBuilds() { DataTable dt = (DataTable)myDataGridView1.DataSource; Dictionary <string, int> dict = sql.GetNumber(); DataKeep.Serialize(configPath, false, ref param); string ClassName = ""; string CodingName = ""; string cInvName = ""; string cInvStd = ""; List <int> redlist = new List <int>(); foreach (Map map in param.Maps) { Console.WriteLine(map.Name); if (map.Name.Equals("存货大类编码")) { ClassName = map.Value; } else if (map.Name.Equals("存货编码")) { CodingName = map.Value; } else if (map.Name.Equals("规格型号")) { cInvStd = map.Value; } else if (map.Name.Equals("存货名称")) { cInvName = map.Value; } } Console.WriteLine(ClassName + "," + CodingName); if (dt.Columns.Contains(ClassName) && dt.Columns.Contains(CodingName) && dt.Columns.Contains(cInvStd) && dt.Columns.Contains(cInvName)) { foreach (DataRow row in dt.Rows) { if (row[ClassName] != DBNull.Value) { string name = row[cInvName].ToString().Trim(); string std = row[cInvStd].ToString().Trim(); DataTable dtnew = sql.AccurateQuery_AND_Like(name, "cInvName", std, "cInvStd"); if (dtnew == null || dtnew.Rows.Count > 0) { redlist.Add(row.Table.Rows.IndexOf(row)); continue; } string value = row[ClassName].ToString().Trim(); int num; if (dict.ContainsKey(value)) { num = dict[value]; } else { MessageBox.Show(value + "分类编码错误"); continue; } string numstr = string.Format("{0:D5}", num + 1); try { string Classstr = value.Substring(0, 4) + "." + value.Substring(4, 2); row[CodingName] = Classstr + "." + numstr; dict[value] = num + 1; } catch (Exception e1) { MessageBox.Show(e1.Message); } } } } else { MessageBox.Show(string.Format("表没有{0}列或{1}列", ClassName, CodingName)); } dt.AcceptChanges(); LookForDuplicates(); foreach (var i in redlist) { myDataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Red; } }