WinForm DataGridView行操作

单行上移

        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;
       

    }


}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值