我有一个数据集,我用它来创建一个带循环的html表。我可以使用数据集中的主题填充单元格,但不能正确布局。 当我运行它时,表格将主题显示为
Subject1 Subject1 Subject1
Subject2 Subject2 Subject2
Subject3, Subject3, Subject3
我试图让它看起来像,
Subject1 Subject2 Subject3
Subject4 Subject5 Subject6
Subject7 Subject8 Subject9
我的代码是..
// Current row count.
int rowCtr;
// Total number of cells per row (columns).
int cellCtr;
// Current cell counter.
int cellCnt;
//count number of rows in dataset
int rN = test.dsSubjects.Tables[0].Rows.Count;
cellCnt = 3;
for (rowCtr = 1; rowCtr <= rN; rowCtr++)
{
// Create a new row and add it to the table.
TableRow tRow = new TableRow();
Table1.Rows.Add(tRow);
for (cellCtr = 1; cellCtr <= cellCnt; cellCtr++)
{
// Create a new cell and add it to the row.
TableCell tCell = new TableCell();
tRow.Cells.Add(tCell);
// Add a literal text as control.
string myStr = test.dsSubjects.Tables[0].Rows[rowCtr -1]["SubjectName"].ToString();
tCell.Controls.Add(new LiteralControl(myStr));
}
}
我知道这是基本的,但我之前没有用for循环来做这件事。
(只是旁注,我在通过数据集时得到的rowCtr为-1,因为如果没有,则会抛出错误)
任何人都可以指出我在循环中出错的地方以获得我需要的布局吗?我猜这很简单我错过了..
由于
答案 0 :(得分:0)
你的嵌套for循环执行了三次但是在这里:
test.dsSubjects.Tables[0].Rows[rowCtr -1]["SubjectName"].ToString();
你总是得到相同的价值。所以你的价值重复三次。检查你的价值并再试一次。
试试这个:
for (rowCtr = 0; rowCtr < rN; rowCtr+=3)
{
// Create a new row and add it to the table.
TableRow tRow = new TableRow();
Table1.Rows.Add(tRow);
int temp = rowCtr;
for (int i = 0; i<3; i++)
{
if(temp >=rN) break;
// Create a new cell and add it to the row.
TableCell tCell = new TableCell();
tRow.Cells.Add(tCell);
// Add a literal text as control.
string myStr = test.dsSubjects.Tables[0].Rows[temp]["SubjectName"].ToString();
tCell.Controls.Add(new LiteralControl(myStr));
temp++;
}
}
答案 1 :(得分:0)
如上所述,您重复三次相同的数据。读一行后增加行计数器,如下所示:
string myStr = test.dsSubjects.Tables[0].Rows[rowCtr -1]["SubjectName"].ToString();
rowCtr++;
编辑:关于评论中的第二个问题,Index为0,Count始终为LastIndex + 1
。
当你这样做时:
int rN = test.dsSubjects.Tables[0].Rows.Count;
然后您可以访问的最后一行是rN - 1
,实际上您在此处执行此操作:test.dsSubjects.Tables[0].Rows[rowCtr -1]["SubjectName"].ToString();
。
上面的代码应该可以正常工作,您可以测试将rowCtr
替换为1到7。