asp.net使用for循环实现Datalist的分列显示功能 |
服务器控件虽然用起来方便,但是也牺牲了性能,有些时候用起来显得大而无当 。希望先进朋友多多指教 。 复制代码 代码如下: /// <summary> /// 工程业绩--用for循环代替了DataList多列显示,得到2行四列的表格,需要内存表的8行数据 /// </summary> private void GcyjShow() { StringBuilder sb = new StringBuilder(); ProductBLL pb = new ProductBLL(); DataTable dt = pb.GetProductByMoreConditions("工程业绩", "工程业绩", "启用"); int count = dt.Rows.Count;//行数 sb.Append("<table style=display: inline; vertical-align: middle; cellpadding=5 align=center>");//俩行四列的表格 sb.Append("<tr>"); for (int i = 0; i < count; i++) { DataRow dr = dt.Rows[i]; string strId = dr["ProdId"].ToString(); string strUrl = dr["Picture"].ToString(); string strName = dr["ProdName"].ToString(); if (dr != null) { sb.Append("<td>"); sb.Append("<table border=0 cellspacing=0 cellpadding=0 width=100%>"); sb.Append("<tr>"); sb.Append("<td bgcolor=#ffffff>"); if (!string.IsNullOrEmpty(strId) && !string.IsNullOrEmpty(strName) && !string.IsNullOrEmpty(strUrl)) { sb.Append("<a title=/" + strName + ""); sb.Append(" href=GcyjShow.aspx?strId=" + strId + ">"); sb.Append("<img border=0 width=120 height=98 alt="); sb.Append(strName + ""); sb.Append(" src=/Photo/"); sb.Append(strUrl + ">"); sb.Append("</a>"); } sb.Append("</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>"); sb.Append("<div style=padding-left: 15px; background: url(Images/index_r1_c9.jpg) no-repeat>"); if (!string.IsNullOrEmpty(strName)) { if (strName.Length > 7) sb.Append(strName.Substring(0, 7) + "..."); else sb.Append(strName); } sb.Append("</div>"); sb.Append("</td>"); sb.Append("</tr>"); sb.Append("</table>"); sb.Append("</td>"); } //我们把内存表的4行数据,当做4列一行来输出 //如果内存表行数count<=4,即小于我们要显示的一行一列,会自动终止循环,不需要对tr进行处理 //在等数据等于四列(即一行),且大于一行时 --才进行换行 if (i == 3 && count > 4) { sb.Append("</tr><tr>"); } if (i == 7)//当循环达到8次时,一个俩行四列的表格已经完成,此时终止循环 { break; } } sb.Append("</tr>"); sb.Append("</table>"); lblGcyj.Text = sb.ToString();//用Label标签来输出 } |