使用按字母顺序排列的人名填充表格

时间:2012-11-26 09:51:31

标签: c#

我在客户端动态创建一个表,并用人名列表填充它。

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|

想象一下,这些字母是人名的第一个字母。

1 个答案:

答案 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>");