服务器控件虽然用起来方便,但是也牺牲了性能,有些时候用起来显得大而无当。希望先进朋友多多指教。
/// <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标签来输出 
}
asp.net使用for循环实现Datalist的分列显示功能
原文:http://www.jb51.net/article/21226.htm