6. 一行三列算法
思路:
第一,要计算出总行数(用户获取所有数据%每行要显示的数据,如果% 结果为0 侧表示除数,否则 取除数 + 1);
第二,开始以总行数,开始循环(控制外循环)
第三,如何控制内循环呢?让显示的记录数来控制
看看规律
// 假设一行显示三列 cloum = 3
行号 数据个数
1 3 1×3
2 6 2×3
3 9 3×3
i i*3
用0表示第一行的话
0 (0+1)*3 是3条记录就让其循环3次,
1 (1+1)*3 是6条记录就让其循环6次,
i (i+1)*cloum 是9条记录就让其循环9次,
用每行显示记录数来控制内部<td>循环。
如下是 jsp
<table width="98%" border="1" cellspacing="0" cellpadding="0" class="userid" bordercolor="#8CBDE3" style="border-collapse:collapse;">
<%
int column=3;
int i_row_total = (ip_list.size()%column!=0)?(ip_list.size()/column)+1:ip_list.size()/column;//总行数行数
int i_td = 0;//控制内层循环开始
for(int i=0;i<i_row_total;i++)
{
%>
<tr>
<%
int i_temp = i==0?column:(i+1)*column;
if(i_temp>ip_list.size())
i_temp = ip_list.size();
for(int j=i_td;j<i_temp;j++){//循环td
VdcIpUsageVO data = (VdcIpUsageVO)ip_list.get(j);
%>
<!-- 虚机在用 -->
<% if(data.getIs_use().equals("1") && data.getIs_virtual__ip_addr().equals("0")){
%>
<td width="33%"><input name="vm_ip" type="checkbox" id="check" value="<%=data.getIp_addr() %>" disabled checked="checked" /><%=data.getIp_addr()%>(VM已占用)</td>
<%
}
%>
<!-- 已经设置的在用虚地址 -->
<% if(data.getIs_use().equals("1") && data.getIs_virtual__ip_addr().equals("1")){
%>
<td width="33%"><input name="selects" type="checkbox" id="check" value="<%=data.getIp_addr() %>" checked="checked"/><%=data.getIp_addr()%></td>
<%
}
%>
<!-- 待分配 -->
<% if(data.getIs_use().equals("2") && data.getIs_virtual__ip_addr().equals("0")){
%>
<td width="33%"><input name="selects" type="checkbox" id="check" value="<%=data.getIp_addr()%>" /><%=data.getIp_addr()%></td>
<%
}
%>
<%i_td++;}%>
</tr>
<%} %>
</table>