/// <summary> /// 批量修改 /// </summary> private void SetData() { IEnumerator enumerator = myDataGridView1.SelectedCells.GetEnumerator(); DataTable dt = (DataTable)myDataGridView1.DataSource; DataTable dtData = new DataTable(); foreach (DataColumn col in dt.Columns) { dtData.Columns.Add(col.ColumnName); } List <DataRow> rowlist = new List <DataRow>(); List <int> indexlist = new List <int>(); string cInvStd = dictparam["cInvStd"]; string cInvName = dictparam["cInvName"]; while (enumerator.MoveNext()) { var cell = enumerator.Current as DataGridViewCell; var indexCol = cell.ColumnIndex; var indexRow = cell.RowIndex; string name = myDataGridView1.Columns[indexCol].HeaderText; if (name.Equals(cInvStd)) { string value = cell.Value.ToString(); DataTable data = sqlProcessor.AccurateQuery(value, "cInvStd"); if (data.Rows.Count > 0) { if (data.Rows.Count == 1) { rowlist.Add(data.Rows[0]); indexlist.Add(indexRow); } else if (data.Rows.Count > 1) { dtData.Clear(); dtData.Rows.Add(dt.Rows[indexRow].ItemArray); DataForm form2 = new DataForm(sqlProcessor, data, dtData); if (form2.ShowDialog() == DialogResult.OK) { DataRow row = form2._row; rowlist.Add(row); indexlist.Add(indexRow); } } } } else if (name.Equals(cInvName)) { string value = cell.Value.ToString(); DataTable data = sqlProcessor.AccurateQuery(value, "cInvName"); if (data.Rows.Count > 0) { if (data.Rows.Count == 1) { rowlist.Add(data.Rows[0]); indexlist.Add(indexRow); } else if (data.Rows.Count > 1) { dtData.Clear(); dtData.Rows.Add(dt.Rows[indexRow].ItemArray); DataForm form2 = new DataForm(sqlProcessor, data, dtData); if (form2.ShowDialog() == DialogResult.OK) { DataRow row = form2._row; rowlist.Add(row); indexlist.Add(indexRow); } } } } } for (int i = 0; i < rowlist.Count; i++) { DataRow dr = dt.Rows[indexlist.ElementAt(i)]; DataRow row = rowlist.ElementAt(i); dr.BeginEdit(); foreach (var map in param.Maps) { if (dr.Table.Columns.Contains(map.Value) && row.Table.Columns.Contains(map.Name)) { dr[map.Value] = row[map.Name].ToString(); } else if (dr.Table.Columns.Contains(map.Value) && row.Table.Columns.Contains(map.Value)) { dr[map.Value] = row[map.Value].ToString(); } } dr.EndEdit(); } dt.AcceptChanges(); }