单行上移
private void ucBtnUp_Click(object sender, EventArgs e)
{
DataGridView dataGridView = new DataGridView();
DataTable dataTable = new DataTable();
DataRow newRow;
DataGridViewRow selectedRow;
int selectedRowIndex;
int newRowIndex;
GetCurrentDataGridView(out dataGridView, out dataTable);//获取表格控件和数据源
if (dataGridView.SelectedRows.Count > 0)
{
selectedRow = dataGridView.SelectedRows[0];
selectedRowIndex = dataGridView.Rows.IndexOf(selectedRow);
if (selectedRowIndex >= 1)
{
newRowIndex = selectedRowIndex - 1;
}
else
{
newRowIndex = 0;
}
newRow = dataTable.NewRow();
for (int index = 0; index < dataTable.Columns.Count; index++)
{
newRow[index] = dataTable.Rows[selectedRowIndex][index];
}
dataTable.Rows.Remove(dataTable.Rows[selectedRowIndex]);
dataTable.Rows.InsertAt(newRow, newRowIndex);
dataGridView.ClearSelection();
dataGridView.Rows[newRowIndex].Selected = true;
}
}
单行下移
private void ucBtnDown_Click(object sender, EventArgs e)
{
DataGridView dataGridView = new DataGridView();
DataTable dataTable = new DataTable();
DataRow newRow;
DataGridViewRow selectedRow;
int selectedRowIndex;
int newRowIndex;
GetCurrentDataGridView(out dataGridView, out dataTable);//获取表格控件和数据
if (dataGridView.SelectedRows.Count > 0)
{
selectedRow = dataGridView.SelectedRows[0];
selectedRowIndex = dataGridView.Rows.IndexOf(selectedRow);
if (selectedRowIndex < dataGridView.Rows.Count - 1)
{
newRowIndex = selectedRowIndex + 1;
}
else
{
newRowIndex = dataGridView.Rows.Count - 1;
}
newRow = dataTable.NewRow();
for (int index = 0; index < dataTable.Columns.Count; index++)
{
newRow[index] = dataTable.Rows[selectedRowIndex][index];
}
dataTable.Rows.Remove(dataTable.Rows[selectedRowIndex]);
dataTable.Rows.InsertAt(newRow, newRowIndex);
dataGridView.ClearSelection();
dataGridView.Rows[newRowIndex].Selected = true;
}
}
多行上移:
private void ucBtnUp_Click(object sender, EventArgs e)//多行操作
{
DataGridView dataGridView;
DataTable dataTable;
int insertRowIndex;
List<DataRow> byMoveUpRows;
List<DataRow> newRows;
GetCurrentDataGridView(out dataGridView, out dataTable);//获取表格控件和数据
if (dataGridView.SelectedRows.Count > 0)
{
dataGridView.ClearSelection();
insertRowIndex = dataGridView.SelectedRows[dataGridView.SelectedRows.Count - 1].Index - 1;
byMoveUpRows = new List<DataRow>();
newRows = new List<DataRow>();
foreach (DataGridViewCell cell in dataGridView.SelectedCells)
{
if (!byMoveUpRows.Contains(dataTable.Rows[cell.RowIndex]))
{
byMoveUpRows.Add(dataTable.Rows[cell.RowIndex]);
}
}
byMoveUpRows.Reverse();
foreach (DataRow byMoveUpRow in byMoveUpRows)
{
DataRow newRow = dataTable.NewRow();
for (int index = 0; index < dataTable.Columns.Count; index++)
{
newRow[index] = byMoveUpRow[index];
}
newRows.Add(newRow);
}
foreach (DataRow dataRow in byMoveUpRows)
{
dataTable.Rows.Remove(dataRow);
}
foreach (DataRow dataRow in newRows)
{
dataTable.Rows.InsertAt(dataRow, insertRowIndex);
insertRowIndex++;
}
}
}
复制(通过全局变量实现):
private DataRow byCutOrCopyRow;
private void ucBtnCopy_Click(object sender, EventArgs e)
{
DataGridView dataGridView = null;
DataTable dataTable = null;
DataRow newByCutOrCopyRow = null;
DataGridViewRow byCutOrCopyRow = null;
int byCutOrCopyRowIndex;
int category;
GetCurrentDataGridView(out dataGridView, out dataTable);
if (dataGridView.SelectedRows.Count > 0)
{
byCutOrCopyRow = dataGridView.SelectedRows[0];
byCutOrCopyRowIndex = dataGridView.Rows.IndexOf(byCutOrCopyRow);
newByCutOrCopyRow = dataTable.NewRow();
for (int index = 0; index < dataTable.Columns.Count; index++)
{
newByCutOrCopyRow[index] = dataTable.Rows[byCutOrCopyRowIndex][index];
}
byCutOrCopyRow= newByCutOrCopyRow;
}
}
剪切(通过全局变量实现):
private DataRow byCutOrCopyRow;
private void ucBtnCut_Click(object sender, EventArgs e)
{
DataGridView dataGridView = new DataGridView();
DataTable dataTable = new DataTable();
DataRow newByCutOrCopyRow;
DataGridViewRow byCutOrCopyRow;
int byCutOrCopyRowIndex;
int category;
GetTabLeftCurrentDataGridView(out dataGridView, out dataTable, out _);
if (dataGridView.SelectedRows.Count > 0)
{
byCutOrCopyRow = dataGridView.SelectedRows[0];
byCutOrCopyRowIndex = dataGridView.Rows.IndexOf(byCutOrCopyRow);
newByCutOrCopyRow = dataTable.NewRow();
for (int index = 0; index < dataTable.Columns.Count; index++)
{
newByCutOrCopyRow[index] = dataTable.Rows[byCutOrCopyRowIndex][index];
}
dataTable.Rows.Remove(dataTable.Rows[byCutOrCopyRowIndex]);
dataGridView.ClearSelection();
byCutOrCopyRow= newByCutOrCopyRow;
}
}
粘贴(通过全局变量实现):
private DataRow byCutOrCopyRow;
private void ucBtnPaste_Click(object sender, EventArgs e)
{
DataGridView dataGridView = null;
DataTable dataTable = null;
DataRow byCutOrCopyRow = null;
DataRow newRow = null;
DataGridViewRow selectedRow = null;
int selectedRowIndex;
int category;
GetCurrentDataGridView(out dataGridView, out dataTable);
if (dataGridView.SelectedRows.Count > 0)
{
dataTable = (DataTable)dataGridView.DataSource;
newRow = dataTable.NewRow();
selectedRow = dataGridView.SelectedRows[0];
selectedRowIndex = dataGridView.Rows.IndexOf(selectedRow);
for (int index = 0; index < dataTable.Columns.Count; index++)
{
newRow[index] = byCutOrCopyRow[index];
}
dataTable.Rows.InsertAt(newRow, selectedRowIndex + 1);
dataGridView.ClearSelection();
dataGridView.Rows[selectedRowIndex + 1].Selected = true;
}
}