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

(0)

相关推荐

  • ASP.NET MVC5网站开发之业务逻辑层的架构和基本功能 (四)

    业务逻辑层在Ninesky.Core中实现,主要功能封装一些方法通过调用数据存储层,向界面层提供服务. 一.业务逻辑层的架构 Ninesky.Core包含三个命名空间Ninesky.Core.Ninesky.Core.Types.Ninesky.Core.General. Ninesky.Core包含模型和功能实现,Ninesky.Core.Types是项目用到的一些类型的定义,Ninesky.Core.General是项目用到的一些方法的定义. 1.Ninesky.Core命名空间的结构 Ni

  • ASP.NET MVC5 网站开发框架模型、数据存储、业务逻辑(三)

    前面项目的层次和调用关系都说明了,关系如下图 采用三层架构的时候,研究过BLL层的必要性,觉得业务逻辑完全可以在controller里实现,没有必要单独做一个项目,另一个分层多了会影响性能.后来我还是把业务逻辑独立出来,原因如下: 业务逻辑写进controller里代码看着比较混乱,时间久了代码容易理不清. 在controller里直接写逻辑重复代码会不较多,开发效率低. 分项目有利于代码重用,有时候可以直接拿到其他项目中稍作修改就可以用. 对于性能我觉得分层多了肯定会有影响,但是不会很大.现在

  • asp.net中for和do循环语句用法分享

    本示例的FOR循环创建一个Mandelbrot图像. 复制代码 代码如下: using System; namespace a { class Program { public static void Main(string[] args) { double realCoord,imagCoord; double realTemp,imagTemp,realTemp2,arg; int iterations; for (imagCoord=1.2;imagCoord>=-1.2;imagCoor

  • asp.net for循环语句第1/2页

    for循环的格式为: for([初始化表达式];[条件表达式];[迭代表达式 ]){          //语句块}其中:[初始化表达式];[条件表达式];[迭代表达式 ]都是可选的,[条件表达式]必须是一个布尔表达式. 执行步骤为:第一步:开始执行初始化表达式,只执行一次.第二步:开始执行条件表达式(若为空,则返回true),若为true,则执行大括号中的语句:若为false,则直接跳到for的结束点.第三步:开始执行迭代表达式+条件表达式.第四步:若条件表达式为true,则执行大括号中的语句

  • .NET中RDLC循环处理数据的应用分析

    当我们在使用RDLC开发报表的时候,如果数据源内容如下. 复制代码 代码如下: private List<UserData> CreateDataSet(){    List<UserData> userDataSet = new List<UserData>();    userDataSet.Add(new UserData() { Name = "Clark", Age = 18 });    userDataSet.Add(new UserD

  • asp.net运算符之逻辑运算符以及其他运算符介绍与实例

    逻辑(布尔型)运算符用于对boolean型的结果的表达式进行运算,运算的结果都是boolean型.其运算结果如下所示: 运算符 运算 例子 结果 & AND(与) false&true false | OR(或) false|true true ^ XOR(异或) false^true true ! NOT(非) !false true && AND(短路) false&&true false || OR(短路) false||true true 下面对一些

  • 详解.net循环、逻辑语句块(基础知识)

    循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好了,进入正题: 本篇还是.NET 基础部分咯,主要简述循环,判断: 循环: for循环 语法: for(表达式1;表达式2;表达式3) { 循环体; } 表达式1一般为声明循环变量,记录循环的次数(int i=0;) 表达式2一般为循环条件(i<10) 表达式3一般为改变循环条件的代码,使循环条件终有一

  • asp.net使用for循环实现Datalist的分列显示功能

    服务器控件虽然用起来方便,但是也牺牲了性能,有些时候用起来显得大而无当.希望先进朋友多多指教. 复制代码 代码如下: /// <summary> /// 工程业绩--用for循环代替了DataList多列显示,得到2行四列的表格,需要内存表的8行数据 /// </summary> private void GcyjShow() { StringBuilder sb = new StringBuilder(); ProductBLL pb = new ProductBLL(); Da

  • asp.net中将数据库绑定到DataList控件的实现方法与实例代码

    解决方法1: datalist databind() 解决方法2: 查看MSDN上的详细说明资料 解决方法3: 在DataList的模板中用table表格,如: 复制代码 代码如下: <asp:DataList ID="dlDetailedInfo" runat="server" OnItemDataBound="dlDetailedInfo_ItemDataBound" Width="100%"> <Ite

  • asp.net TreeView递归循环子节点生成树形菜单实例

    本文实例讲述了asp.net TreeView递归循环子节点生成树形菜单的方法.分享给大家供大家参考,具体如下: 这里主要用到递归循环获取子结点 /// <summary> /// 生成根节点 /// </summary> /// <param name="treeview"></param> protected void BindTreeView(long ID, TreeView treeview) { DataTable dt =

  • asp.net下无法循环绑定投票的标题和选项的解决方法

    问题:1,无法循环绑定投票的标题和选项 解决方法: 在Repeater绑定中添加ItemDataBound事件,选项用RadioButtonList绑定,附源代码: Default页,源页面 复制代码 代码如下: <div> 广大网友对保障房建设相关问题调查<br /> <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemData

  • ASP.NET技巧:做个DataList可分页的数据源

    这个数据源,分两部分,一是从数据类中调出数据,然后在本数据源中对分页参数以及页面分页辅助控件进行操作!在前面有三个控件控制翻页,一个下拉列表,两个LinkButton! 下面 fill() 方法调用很简单,在页面中要重新绑定的地方 写上 fill() 就可以了,呵呵!但是一定要写哦,例如翻页动作执行后! 下面是db类中的ds方法 public static DataTable ds(string que)    {//返回一个装载了SQL制定留言的数据表,        OleDbConnect

  • 在ASP.NET 2.0中操作数据之二十九:用DataList和Repeater来显示数据

    导言 在之前的28篇教程的例子里,如果我们需要显示某个数据源的多条记录,我们使用GridView .GridView 的一行表示数据源的一条记录,列表示一个字段.虽然GridView 用来显示数据,分页,排序,编辑,删除非常的方便,但是有点臃肿.而且GridView 结构的标记是固定的-它包含一个带有<tr>和<td>的HTML <table>标记. 为了在显示多条记录时,有更好的自定义功能,ASP.NET 2.0提供了DataList 和Repeater (ASP.N

  • 在ASP.NET 2.0中操作数据之三十六:在DataList里编辑和删除数据概述

    导言 概述插入.更新和删除数据 里我们已经学习了如何使用GridView等控件来插入,更新删除数据.通过ObjectDataSource和其它数据控件仅仅只需要在智能标签里勾一下checkbox就完成了,不需要写任何代码.而DataList没有这些内置的功能.我们可以使用1.x 里的方法来实现这些功能.在本章我们将看到,DataList提供了一些事件和属性来完成我们的目的,为此我们需要写一些代码. 本章我们首先学习如何创建一个支持编辑和删除数据的DataList.后面的教程里我们将学习一些高级的

  • ASP数据库编程SQL常用技巧

    一.怎样删除一个表中某个字段重复的列呀,举个例子 表[table1] id  name  1  aa  2  bb  3  cc  1  aa  2  bb  3  cc  我想最后的表是这样的 id  name   1  aa  2  bb  3  cc  回答: 将记录存到临时表#t中,重复的记录只存一条,然后将临时表#t中的记录再存回原表中,注意"select distinct id,class,name"要包含你需要的所有字段,否则有些字段就被删掉了. 在查询管理器里执行下面代

  • AlternatingItemTemplate类似于 ItemTemplate 元素

    DataList Web 服务器控件 通过使用模板显示数据源中的项.通过操作组成 DataList 控件的不同组件的模板(如 ItemTemplate 和 HeaderTemplate),可以自定义该控件的外观和内容. <asp:DataList id="DataList1"      CellPadding="pixels"      CellSpacing="pixels"      DataKeyField="DataSou

  • 决定何时使用 DataGrid、DataList 或 Repeater(ASP.NET 技术文章)

    摘要:了解 ASP.NET 用于显示数据的三个控件: DataGrid.DataList 和 Repeater. 这些控件中的每一个都有独特的特性以及相关的优点和缺点. 创建显示数据的 ASP.NET 应用程序时,为这项工作选择正确的控件非常重要. 正如将在本文中所看到的一样,选择使用 DataGrid.DataList 还是 Repeater,要权衡下面三个因素: 可用性.开发时间和性能. (12 页打印页) 简介 自从出现了像 Microsoft Active Server Pages (A

随机推荐