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标签来输出

  }