【问题标题】:Adding table rows through For-Loop通过 For-Loop 添加表行
【发布时间】:2012-10-23 11:50:15
【问题描述】:

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

这是我没有使用 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 循环来实现?

【问题讨论】:

  • 这些数据来自哪里?循环访问实际的数据源。您可以简单地将表格与您的数据源绑定(如果有)。
  • 你已经有了可读和工作的代码,为什么要改变它?
  • 将对数字进行计算。例如,行的前两个数字是成对的,并且必须使用特定的 - 并且动态设置的 - 运算符来计算。第三个和第四个数字相同。然后,将再次计算这两对的结果,并在该行的第 5 个条目上填写。搜索真值表。

标签: c# datagrid for-loop datatable


【解决方案1】:

你可以使用这个循环,虽然它不是很可读。因此,如果您可以使用静态代码,请使用它。

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;
        }
    }
}

【讨论】:

    【解决方案2】:

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

    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
    */
    

    【讨论】:

    • 作者当前代码包含30二进制。这表明循环应该计数到30 而不是16
    • 对于真值表和作者自己来说,这将是 32:最后一个零将动态生成,无需对此做任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2021-10-17
    相关资源
    最近更新 更多