首页 新闻 会员 周边

关于ASP.NET 后台动态追加表格换行的问题!

0
悬赏园豆:20 [已解决问题] 解决于 2010-08-20 10:00

最近做了一个前台比较多的模块,由于我前台不是很好,所以老是问问题 ,希望大家能帮我下 呵呵。

现在我遇到一个问题如图,这是前台,后台是这么写的 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循环 可是具体怎么写,想不起来了。希望各位大侠帮帮忙,因为这个我还比较急的。谢谢

JasonNET的主页 JasonNET | 初学一级 | 园豆:168
提问于:2010-08-19 21:46
< >
分享
最佳答案
0

一、前台可以用DataList,设置RepeatColumns=X即可

http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.datalist.repeatcolumns%28VS.80%29.aspx

二、以前用过的一段代码,谨供参考:

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");
}

}

 

收获园豆:20
邀月 | 高人七级 |园豆:25475 | 2010-08-19 23:24
谢谢 我根据你说的,已经做出来了,不过前台我没用DataList,而是用的Label。不过这里我不是很明白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");}},能讲解下吗?
JasonNET | 园豆:168 (初学一级) | 2010-08-20 10:02
还有就是我的RowCount用的dt.Rows.Count,应该没问题吧
JasonNET | 园豆:168 (初学一级) | 2010-08-20 10:03
这里是举例,其实就是把你真实的字段,比如图片、文字、链接等添加进来就可以了。
邀月 | 园豆:25475 (高人七级) | 2010-08-20 10:07
哦 我明白了。谢谢
JasonNET | 园豆:168 (初学一级) | 2010-08-20 10:11
其他回答(1)
0

在,for (int i = 0; i < dt.Rows.Count; i++),里用IF判断I的值,然后灵活输出<tr>的值,这种情况用表格不是很灵活,因为有时候如果数据库里不是整行,这样导致最后一行少几个td,在有些浏览器里会出错变表。可以考虑用div+css实现,用UL。

Astar | 园豆:40805 (高人七级) | 2010-08-20 10:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册