2017-08-16 64 views
-3

我有一个问题。如果row [i] .value =“1.1”,我想添加新的行,那么我添加的行已经位于行[i]之上并且填充3个单元格的值(其他单元格是空白的).Before [![enter image description这里] [1]] [1]之后[![输入图像描述] [2]] [2]在dataGridView C中添加行和填充值#

+1

您的问题_“我有问题。如果row [i] .value =“1.1”,我想添加新行,那么我添加行的位置在行[i]上方,填充3个单元格的值(其他单元格为空)。“_... make没有意义。您可能想要参加一个[Tour](https://stackoverflow.com/tour),其中显示了SO的工作原理。另外,您可能想仔细阅读[如何问一个好问题?](http://stackoverflow.com/help/how-to-ask),如果您需要[帮助](http:// stackoverflow .COM /帮助)。(http://stackoverflow.com/help)。请说清楚你在问什么。 – JohnG

回答

0

第一次加载你的DataGridView你需要将DataTable作为初始源传递给一个方法看起来类似于:

private void addExtraRows(DataTable dT) 
{ 

    DataTable newTable = dT.Clone(); 
    DataRow nR; 
    int lastRow = dT.Rows.Count - 1; 
    for (int i = 0; i < lastRow; i++) 
    { 
     if (dataGridView3.Rows[i].Cells[1].Value.ToString() == "1.1") 
     { 
      for (int j = i + 1; j < dT.Rows.Count; j++) 
      { 
       if (dT.Rows[j][2] == dT.Rows[i][2] && dT.Rows[j][3] == dT.Rows[i][3]) 
       { 
        nR = newTable.NewRow(); 
        nR[0] = dT.Rows[i][0]; 
        nR[1] = "1"; 
        nR[2] = dT.Rows[i][2]; 
        nR[3] = dT.Rows[i][3]; 
        newTable.Rows.Add(nR); 
        break; 
       } 
      } 
     } 
     nR = newTable.NewRow(); 
     nR[0] = dT.Rows[i][0]; 
     nR[1] = dT.Rows[i][1]; 
     nR[2] = dT.Rows[i][2]; 
     nR[3] = dT.Rows[i][3]; 
     nR[4] = dT.Rows[i][4]; 
     newTable.Rows.Add(nR); 
    } 
    nR = newTable.NewRow(); 
    nR[0] = dT.Rows[lastRow][0]; 
    nR[1] = dT.Rows[lastRow][1]; 
    nR[2] = dT.Rows[lastRow][2]; 
    nR[3] = dT.Rows[lastRow][3]; 
    nR[4] = dT.Rows[lastRow][4]; 
    newTable.Rows.Add(nR); 

    dataGridView3.DataSource = null; 
    dataGridView3.Rows.Clear(); 
    dataGridView3.DataSource = newTable; 
    return; 
} 

请注意,您可能需要更改dataGridView的名称!

编辑:

假设你的DataGridView的DataSource是一个DataTable,那么你可以改变的方法来启动:

private void addExtraRows() 
{ 
    DataTable dT = (DataTable)dataGridView3.DataSource; 
    DataTable newTable = dT.Clone(); 

现在,所有你需要做的是后调用这个例程你的网格已经加载。

+0

Yah,Jonathan dT是datatable有接收dataGridView的数据吗?我不清楚这一点。 –

+0

您需要传递用于首先将DataGridView作为参数加载到此方法的DataTable。 –

+0

您的意思是:Datatable dT = new Datatable;的dT =(数据表)dataGridview1.datasource;对不起,但我是新手,我学习如此糟糕:( –