在后面的代码中创建表并显示文本框

时间:2012-01-30 20:14:10

标签: c# asp.net

我有一个数据集,我想显示数据库。我的目标是使用VS 2005在aspx页面上显示一个月的数据,每行5天。我写了这样的代码,但我对i和j感到困惑。此代码不显示任何内容

if (ds != null && ds.Tables[0].Rows.Count > 0)
{
    Table table = new Table();
    table.ID = "Table1";

    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    TextBox tb1 = new TextBox();
    TextBox tb2 = new TextBox();

    // I am not sure what i and j should be here to display 5 per each row..
    for (int i = 0; i < 5; i++)
    {
        if (int j == 0; j < ds.Tables[0].Rows.Count; j ++)
        {

             tb1.ID = "txtDateRow" + x + "Col" + j;
             tb1.Text = ds.Tables[0].Rows[x]["Date"].ToString();
             tb2.ID = "txtDetails" + x + "Col" + j;
             tb2.Text = ds.Tables[0].Rows[x]["AmountSold"].ToString();
             cell.Controls.Add(tb1);
             cell.Controls.Add(tb2);
             table.Rows.Add(row);
        }
    }
    Panel1.Controls.Add(table);
}

如果有人能帮助我解决这个问题,我真的很感激。非常感谢。

3 个答案:

答案 0 :(得分:1)

缺少

row.Controls.Add(cell)。此文本框控件的Bcoz未添加到表中,您无法看到任何内容。添加此行,它将帮助您查看。之后你可以考虑一下i&amp;学家

答案 1 :(得分:0)

你有一个带有计数器的循环,即i,但你测试j==0什么是j? 某处j是否已被初始化? j甚至被宣布了吗?如果没有,您确定不想测试i == 0吗?

这就是你在for循环中没有得到任何结果的原因。 代码:

 tb1.ID = "txtDateRow" + x + "Col" + j;
             tb1.Text = ds.Tables[0].Rows[x]["Date"].ToString();
             tb2.ID = "txtDetails" + x + "Col" + j;
             tb2.Text = ds.Tables[0].Rows[x]["AmountSold"].ToString();
             cell.Controls.Add(tb1);
             cell.Controls.Add(tb2);
             table.Rows.Add(row);

在条件之内:

if (j == 0)

问题是这种情况会发生吗?如果是这样,您需要发布更多代码。 调试代码并设置断点并观察它的运行方式。根据你发布的编辑:

if (int j == 0; j < ds.Tables[0].Rows.Count; j ++)

这甚至不起作用,我认为在解决这个问题之前,你需要拿一本关于C#语法的书。

答案 2 :(得分:0)

我不确定代码中应该包含什么'x'。我认为一般结构应该是这样的,但下面的代码将为每列添加相同的东西:

if (ds != null && ds.Tables[0].Rows.Count > 0)
{
    Table table = new Table();
    table.ID = "Table1";

    // j is the row index
    for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
    {
        TableRow row = new TableRow();

        // i is the column index
        for (int i = 0; i < 5; i++)
        {
             TableCell cell = new TableCell();
             TextBox tb1 = new TextBox();
             TextBox tb2 = new TextBox();

             tb1.ID = "txtDateRow" + j + "Col" + i;
             tb1.Text = ds.Tables[0].Rows[j]["Date"].ToString();
             tb2.ID = "txtDetails" + j + "Col" + i;
             tb2.Text = ds.Tables[0].Rows[j]["AmountSold"].ToString();
             cell.Controls.Add(tb1);
             cell.Controls.Add(tb2);

             row.Cells.Add(cell);
        }

        table.Rows.Add(row);
    }
    Panel1.Controls.Add(table);
}