我在客户端动态创建一个表,并用人名列表填充它。
sbData.Append("<table>");
int iColumnCounter = 1;
sbData.Append("<tr>");
foreach (int _iPerId in lsiPeople)
{
if (iColumnCounter == 5)
{
iColumnCounter = 1;
sbData.Append("</tr><tr>");
}
string sName = GetPersonName(_iPerId);
DropDownList_Student.Items.Add(new ListItem(sName, _iPerId.ToString()));
sbData.AppendFormat("<td><input class=\"studentCheckBox\" type=\"checkbox\" onClick=\"UpdateSelectedCounter()\" id={0} name=\"{1}\" value={0}>{1}</td>", _iPerId, sName);
iColumnCounter++;
}
sbData.Append("</tr>");
sbData.Append("</table>");
名称已按字母顺序排序,但正如您所见,这将从左到右跳转列进入。当它到达4列时,它将转到下一行。
我希望它在列中从上到下,然后到下一列,这样就像
______
|A|C|L|
|A|F|N|
|C|K|N|
想象一下,这些字母是人名的第一个字母。
答案 0 :(得分:1)
如果你想要一个4x4表,按字母顺序排列,那么索引将如下:
*/
[0][4][8][12]
[1][5][9][13]
[2][6][10][14]
[3][7][11][15]
*/
所以你想要做的是这样的事情:
sbData.Append("<table>");
int iColumnCounter = 0;
sbData.Append("<tr>");
for(int i = -4; i < lsiPeople.count; )
{
iColumnCounter++;
i+=4;
if(5 == iColumnCounter)
{
iColumnCounter = 1;
i = i - 15;//we want the index to go back to start of next row
sbData.Append("</tr><tr>");
}
string sName = GetPersonName(i);
DropDownList_Student.Items.Add(new ListItem(sName, _iPerId.ToString()));
sbData.AppendFormat("<td><input class=\"studentCheckBox\" type=\"checkbox\" onClick=\"UpdateSelectedCounter()\" id={0} name=\"{1}\" value={0}>{1}</td>", _iPerId, sName);
}
sbData.Append("</tr>");
sbData.Append("</table>");