asp.net使用for迴圈實現Datalist的分列顯示功能
阿新 • • 發佈:2018-12-31
伺服器控制元件雖然用起來方便,但是也犧牲了效能,有些時候用起來顯得大而無當。希望先進朋友多多指教。
複製程式碼 程式碼如下:
/// <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標籤來輸出
}
複製程式碼 程式碼如下:
/// <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標籤來輸出
}