2012-10-23 131 views
0

我正在尝试编写一个程序,该程序需要我将数据添加到数据网格中。有一种模式,但我似乎无法弄清楚如何正确地通过For-Loop完成这些数据。通过For循环添加表格行

这是不使用for循环我的代码:与

table.Rows.Add("0", "0", "0", "0", "0"); 
table.Rows.Add("0", "0", "0", "1", "0"); 
table.Rows.Add("0", "0", "1", "0", "0"); 
table.Rows.Add("0", "1", "0", "0", "0"); 

table.Rows.Add("1", "0", "0", "0", "0"); 
table.Rows.Add("1", "0", "0", "1", "0"); 
table.Rows.Add("1", "0", "1", "0", "0"); 

table.Rows.Add("1", "1", "0", "0", "0"); 
table.Rows.Add("1", "1", "0", "1", "0"); 

table.Rows.Add("1", "1", "1", "0", "0"); 
table.Rows.Add("1", "1", "1", "1", "0"); 

最后零将动态生成的,没有必要做任何事情。

这是否可以通过For-Loop做到?

+0

此数据来自何处?循环访问实际的数据源。您可以简单地将表与数据源绑定在一起(如果有的话)。 –

+1

你已经有了可读的工作代码,为什么改变它? –

+0

计算将在数字上完成。例如,该行的前两个数字是成对的,必须使用特定的动态设置运算符进行计算。第三和第四个数字相同。然后,这两个对的结果将再次计算并填写在该行的第5个条目中。寻找真理。 – Roel

回答

2

虽然这个循环的可读性不好,但可以使用此循环。所以,如果你可以使用你的静态代码,使用它。

bool allFieldsOne = false; 
table.Rows.Add("0", "0", "0", "0", "0"); 
while (!allFieldsOne) 
{ 
    DataRow lastRow = table.Rows[table.Rows.Count - 1]; 
    DataRow currentRow = table.Rows.Add(); 
    currentRow[4] = "0"; 
    for (int f = 3; f >= 0; f--) 
    { 
     if (lastRow.Field<string>(f) == "0") 
     { 
      currentRow[f] = "1"; 
      while (--f >= 0) 
       currentRow[f] = "0"; 
      break; 
     } 
     else 
     { 
      currentRow[f] = "1"; 
      allFieldsOne = f == 0; 
     } 
    } 
} 
0

这样的循环模式会有用吗? (这是用于真值表的模式,它只是二进制计数)

for (int i = 0; i < 16; i++) 
      { 
       Console.WriteLine(
        string.Format("{0:0000}", 
        Convert.ToInt16(Convert.ToString(i, 2))) 
       ); 
      } 

/* 
OUTPUT 
0000 
0001 
0010 
0011 
0100 
0101 
0110 
0111 
1000 
1001 
1010 
1011 
1100 
1101 
1110 
1111 
*/ 
+0

作者当前的代码包含二进制的'30'。这将表明循环应计为'30'而不是'16'。 –

+1

对于真值表和来自作者本身,这将是32:最后的零将被动态生成,不需要做任何事情。 –