2015-06-24 77 views
1

多个datagridviews我最近发布关于如何从7个datagridviews, 每个用数据填充2维排列的7行×5列的问题。 Enigmativity给我提供了一段代码,真是棒极了,非常感谢。填充来自单个2维阵列

public string[,] myGridData = new string[50, 5]; 
//49 data rows, last row (50) contains version number 

var dgvs = new[] { dgv6, dgv5, dgv4, dgv3, dgv2, dgv1, dgv0, }; 

for (var i = 0; i < dgvs.Length; i++) 
{ 
    for (int rows = 0; rows < 7; rows++) 
    { 
    for (int col = 0; col < 5; col++) 
    { 
    myGridData[rows + i * 7, col] = dgvs[i].Rows[rows].Cells[col].Value.ToString(); 
    } 
    } 
} 

我现在需要一种方法来颠倒过程并从原始数组中填充7个datagridviews。

我知道如何填充从二维阵列中的单个datagridview的,但不知道如何填写所有7个网格。 我一直在使用,填补1个格中的代码是:提前

//Populate Single DataViewGrid 
var rowCount = myGridData.GetLength(0); 
var rowLength = myGridData.GetLength(1); 

dgv1.ColumnCount = 5; 

for (int rowIndex = 0; rowIndex < rowCount - 1; ++rowIndex) 
{ 
    var row = new DataGridViewRow(); 

    for (int columnIndex = 0; columnIndex < rowLength; ++columnIndex) 
    { 
     row.Cells.Add(new DataGridViewTextBoxCell() 
     { 
     Value = myGridData[rowIndex, columnIndex] 
     }); 
    } 

    dgv1.Rows.Add(row); 
} 

感谢。

回答

0

就像填充二维数组,你需要通过7个DataGridView控制迭代。将你的代码嵌套到循环中,然后改变你的内循环迭代的距离。而不是迭代rowCount - 1,填充一个DataGridView所有49行,你只能迭代接下来的7行。通过在最外层循环之外移动rowIndex,当你浏览每个视图时,它将“记住”下一个索引。

var rowCount = myGridData.GetLength(0); 
var rowLength = myGridData.GetLength(1); 
int rowIndex = 0; 

var dgvs = new[] { dgv6, dgv5, dgv4, dgv3, dgv2, dgv1, dgv0, }; 

for (int i = 0; i < dgvs.Length; i++) 
{ 
    var dgv = dgvs[i]; 
    dgv.ColumnCount = 5; 

    for (int taken = 0; taken < 7; ++taken, ++rowIndex) 
    { 
     var row = new DataGridViewRow(); 

     for (int columnIndex = 0; columnIndex < rowLength; ++columnIndex) 
     { 
      row.Cells.Add(new DataGridViewTextBoxCell() 
      { 
       Value = myGridData[rowIndex, columnIndex] 
      }); 
     } 

     dgv.Rows.Add(row); 
    } 
} 

如果它让你感觉更好,你可以修改内环到:

for (int taken = 0; taken < 7 && rowIndex < rowCount - 1; ++taken, ++rowIndex) 

但说实话它仍然会执行相同,并创造了每一次迭代额外的逻辑检查。

+0

谢谢OhBeWise,你的代码似乎做的很好! – dkap