2012-11-26 72 views
0

我在客戶端動態創建表並使用人名列表填充表。使用按字母順序排列的人名填充表

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

@ s.m。對不起,我想要4列和儘可能多的行 –

+0

但是,如果您想從上到下填充列,那麼您如何知道何時添加新列?我不明白,對不起。 –

回答

1

如果你想有一個4×4臺,下降字母,則指數將是如下:

*/ 
[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>");