Пример #1
0
        /// <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();
        }