我有点困境。我有一个动态数量的项目,我想将其转换为htmlTable,这将允许我动态确定我希望该表具有的列数和行数。
例如,假设我有5个项目的列表。我希望能够以1x1,2x1,2x2等动态创建表并进行动态渲染。
到目前为止,这是我能够提出的,但是我一直得到一个超出范围的错误,它告诉我在添加项目列表之前我没有创建正确数量的单元格。在考虑自定义列,行和动态列表的同时,我试图弄清楚如何构建表。
HtmlTable myTable = new HtmlTable();
HtmlTableRow row;
HtmlTableCell cell;
int desiredNumberOfColumns = 1; //How many Columns I want
int desiredNumberOfRows = 5; //How many Rows I want
int customColumn = desiredNumberOfColumns / rivers.Count;
int customRow = desiredNumerOfColumns % rivers.Count;
List<string> rivers = new List<string>(new string[]
{
"nile",
"amazon", // River 2
"yangtze", // River 3
"mississippi",
"yellow"
});
for(int i=0; i<(desiredNumberOfRows / rivers.Count); i++) //
{
row = new HtmlTableRow();
for(int j=0;j<(customRow / rivers.Count);++j)
{
row.Cells.Add(new HtmlTableCell(rivers[i]));
}
myTable.Rows.Add(row);
}
此示例应构建一个包含5行和1列的表,如下所示:
___________
Row |Column
0 |nile
0 |amazon
0 |yangtze
0 |mississippi
0 |yellow
-----------
答案 0 :(得分:0)
不使用两个循环,使用分区和mod(可以提供有趣的值),尝试使用一个循环。
int totalObjects = rivers.Count;
int totalCells = desiredRows * desiredColumns;
HtmlTableRow newRow = new HtmlTableRow();
for( i = 0; i < totalCells; i++ )
{
// make a new row when you get the desired number of columns
// skip the first, empty row
if( i % desiredColumns == 0 && i != 0 )
{
myTable.Rows.Add( newRow );
newRow = new HtmlTableRow();
}
// keep putting in cells
if( i < totalObjects )
row.Cells.Add(new HtmlTableCell(rivers[i]));
// if we have no more objects, put in empty cells to fill out the table
else
row.Cells.Add(new HtmlTableCell(""));
}