如何在datagridview中找到一行并将其附加到datagridview的最后一行

时间:2010-09-27 14:41:43

标签: c# winforms datagridview

我有一个gridview,它有2行,有一些数据如下

   101 111111111 1111111111009270754A094101// My first row data

  9000002     1000000020222222236000000000000000000000012000000000000000000000000000000000000000//My 2nd row data

我将添加一些值,使其应插入这两行之间,并且已存在的第二行应移动到datagrid视图的最后一行。就像那样,如果我添加了n个值,那么应该在这些值之间插入值,并且那个已经存在的行应该移到最后一行任何想法请

4 个答案:

答案 0 :(得分:1)

我已使用经过测试的代码对其进行了编辑:

public Form1()
        {

            InitializeComponent();
            //This can be removed before utilizing
                 dgv.Rows.Add("1", "1", "1");
                 dgv.Rows.Add("1", "1", "1");
                 dgv.Rows.Add("bob", "bob", "bob");
                 dgv.Rows.Add("1", "1", "1");
                 dgv.Rows.Add("1", "1", "1");
                 dgv.Rows.Add("1", "1", "1");
            //This can be removed before utilizing


            int oldrow = 2;

            dgv.Rows.Add(itemArray(dgv.Rows[oldrow]));

            dgv.Rows.RemoveAt(oldrow);
            /*
             DataGridViewRow oldRow = dataGridView1.Rows.Add(itemarray(dataGridView1.Rows[1])); dataGridView1.Rows.Remove(oldRow)
             */

        }

        object[] itemArray(DataGridViewRow Row) 
        {
            int a = Row.DataGridView.ColumnCount - 1;
            object[] mOut = new object[a+1];

            for (int x = 0;x <= a ; x++)
            {
                mOut[x] = Row.Cells[x].Value;
            }
            return mOut;

        }

我为所有额外的测试道歉。

答案 1 :(得分:1)

这是我写的,但对我不起作用。我需要的是,如果我的数组以5开头,我想删除gridview中已存在的第二行,并希望在添加特定行后追加它

     if (line.StartsWith("5"))
                {
                    int oldRow = 1;
                    dataGridView1.Rows.Add(itemarray(dataGridView1.Rows[1]));

                    dataGridView1.Rows.RemoveAt(oldRow);

                    dataGridView1.Rows.Add("BatchHeader", line);

                    m_flag = true;
                    StringBuilder sb = new StringBuilder();
                    objfileentry.createFileEntry(Append.FileName, out sb);
                    if (m_flag)
                        dataGridView1.Rows.Add("FileControl", sb.ToString());
                    line = string.Empty;
                }

你的给定功能

private object[] itemarray(DataGridViewRow Row)
    {
        int a = Row.DataGridView.ColumnCount - 1;
        object[] mOut = new object[a + 1]; 

        for (int x = 0; x <= a; x++)
        {
            mOut[x] = Row.Cells[x].Value;
        }
        return mOut;

    }

答案 2 :(得分:0)

如果您以这种方式绑定数据,

myGridView.DataSource = GetDataSource();

您无法以编程方式添加行。如果没有,您可以使用:

DataGridViewRow newRow = new DataGridViewRow();
//set row data here
myGridView.Rows.Insert(newIndex, newRow); //use Insert instead of Add/AddCopy

答案 3 :(得分:0)

您可以使用ListView而不是datagrid吗?