最近做了一个前台比较多的模块,由于我前台不是很好,所以老是问问题 ,希望大家能帮我下 呵呵。
现在我遇到一个问题如图,这是前台,后台是这么写的 string sql = "select IMAGE_ID, IMAGE_NAME, IMAGE_FILE_NAME, IMAGE_SERVER_PATH, IMAGE_FILE_TYPE, IMAGE_USES from exam.ex_q_images_list where IMAGE_SIZE_TYPE=1";
DataTable dt = conn.getDataTable(sql);
StringBuilder sbuilder = new StringBuilder();
sbuilder.Append("<table id=\"tb_max\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
if (dt != null && dt.Rows.Count > 0)
{
sbuilder.Append("<tr>\n");
for (int i = 0; i < dt.Rows.Count; i++)
{
string trans = dt.Rows[i]["image_server_path"].ToString();
string n = trans.Replace("\\", "\\\\");
sbuilder.Append("<td ><img alt=\"\" src=\"" + dt.Rows[i]["image_server_path"].ToString() + "\" style=\"cursor:crosshair\" onclick=\"selface('" + n + "' )\" /></td>\n");
}
sbuilder.Append("</tr>");
}
sbuilder.Append("</table>");
lb_Max.Text = sbuilder.ToString();
我在追加表格的时候我想让它显示1列或者10列 超过规定的列数自动换行,可是我不知道改怎么换行了。我知道要用到for循环 可是具体怎么写,想不起来了。希望各位大侠帮帮忙,因为这个我还比较急的。谢谢
一、前台可以用DataList,设置RepeatColumns=X即可
二、以前用过的一段代码,谨供参考:
int lngColsPerRow=6;//每行6列
int RowCount=65;
int iRet=0;
StringBuilder sb=New StringBuilder();
for (int i = 0; i < dt.Rows.Count; i++)
{
if(i%lngColsPerRow ==0)//不足一行
{
sb.Append("\t<tr height='19px'>\n\t\t<td width='30px'></td>\n");
}
if(i%lngColsPerRow ==lngColsPerRow -1 ) //如果是一行中最后一列,每行显示5个
sb.Append("\t\t<td width='30px'></td></tr>\n");
else if(i==RowCount -1) //如果是最后一行
{
iRet = i% lngColsPerRow;
for(int j =iRet;j<lngColsPerRow;j++)
{
sb.Append("\t\t<td align='center' width='24%'></td>\n");
}
sb.Append("\t\t<td width='30px'></td>\n\t</tr>\n");
}
}
在,for (int i = 0; i < dt.Rows.Count; i++),里用IF判断I的值,然后灵活输出<tr>的值,这种情况用表格不是很灵活,因为有时候如果数据库里不是整行,这样导致最后一行少几个td,在有些浏览器里会出错变表。可以考虑用div+css实现,用UL。