一个页面搞定几乎所有的列表需求的实现思路和一点代码。
2008-07-28 22:02
711 查看
前情回顾 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
其实如果要单独实现一个能够显示数据的表格,那么是很简单的,写一个for循环,把DataTable里面数据循环出来就OK了。相信大家都会做吧,如果是从asp走过来的应该更不陌生吧。
上一篇说了,我们要根据表里面的记录来确定显示哪些列,哪一列在前,哪一列在后。那么怎么做呢?我们先定义一个类来存放这些信息。
public class GridColumnsInfo
{
public int ColumnID = 0;
public string ColSysName = "";
public string ColName = "";
public string ColType = "";
public string ColWidth = "";
public string ColAlign = "";
public string Format = "";
public int MaxLength = 0;
}
然后我们继承 System.Web.UI.WebControls.DataBoundControl,来创建一个自己的显示数据的控件。GridView就是继承的这个基类,我们也先照猫画虎来一个吧。public class myGrid : DataBoundControl {}
DataBoundControl 已经为我们做了不少的事情,比如定义了DataSource属性,还有DataBind()事件,其他的属性、事件我们暂时用不到,就先不管了。DataSource直接用就可以了,不用修改;而DataBind()就需要override一下了。
我们还要先定义一个 Dictionary,用于存放GridColumnsInfo集合。然后写一个public void LoadGridColumnsInfo()函数来加载信息。
public Dictionary<int, GridColumnsInfo> dic_GridCols ;
DataBind() 里面主要分为两个部分,第一部分绘制页眉,第二部分就是循环数据了。
#region 输出页眉
str.Append("<TR class=\"css_GridTR\">");
foreach (KeyValuePair<int, GridColumnsInfo> entry in dic_GridCols)
{
str.Append("<TD>");
str.Append(((GridColumnsInfo)entry.Value).ColName);
str.Append("</TD>");
}
str.Append("</TR>");
#endregion
然后是循环输出数据,感觉这些也没有什么好说的,自己都觉得挺苦燥的。还是说一下行交替颜色的实现方法吧。用控件的形式输出一个table,首先要处理的就是样式,表格的样式要足够的灵活,否则的话就会有不好用的感觉。GridView用了很多的属性来进行描述,这个太复杂了,不和人家学了,来个简单一点的吧。样式/CSS,恩,就交给CSS来处理吧,定义几个css:
css_Grid1 :描绘table,
css_GridTR:描绘页眉,
td:控制td,
css_TR_c1、css_TR_c2、css_TR_c3...css_TR_cn: 来定义行交替色,这个数量就看要用多少种颜色来进行
交替了。
css_TR_move :鼠标经过时的样式;
css_TR_CK: 鼠标单击杭的样式。
最后就是写几个js函数来控制鼠标经过和单击的效果。
这里有演示效果。/article/4599785.html
好像有点乱。这里主要是想说如何根据配置信息来显示table,但是好像变成了介绍如何实现行的交替变色和点击行变色了。
在下面就要做表单控件了。整理成一个完整一点的示例,在提供源码吧。
附源码:
[DefaultProperty("Text")]
[ToolboxData("<{0}:myGrid runat=server></{0}:myGrid>")]
public class myGrid : DataBoundControl
其实如果要单独实现一个能够显示数据的表格,那么是很简单的,写一个for循环,把DataTable里面数据循环出来就OK了。相信大家都会做吧,如果是从asp走过来的应该更不陌生吧。
上一篇说了,我们要根据表里面的记录来确定显示哪些列,哪一列在前,哪一列在后。那么怎么做呢?我们先定义一个类来存放这些信息。
public class GridColumnsInfo
{
public int ColumnID = 0;
public string ColSysName = "";
public string ColName = "";
public string ColType = "";
public string ColWidth = "";
public string ColAlign = "";
public string Format = "";
public int MaxLength = 0;
}
然后我们继承 System.Web.UI.WebControls.DataBoundControl,来创建一个自己的显示数据的控件。GridView就是继承的这个基类,我们也先照猫画虎来一个吧。public class myGrid : DataBoundControl {}
DataBoundControl 已经为我们做了不少的事情,比如定义了DataSource属性,还有DataBind()事件,其他的属性、事件我们暂时用不到,就先不管了。DataSource直接用就可以了,不用修改;而DataBind()就需要override一下了。
我们还要先定义一个 Dictionary,用于存放GridColumnsInfo集合。然后写一个public void LoadGridColumnsInfo()函数来加载信息。
public Dictionary<int, GridColumnsInfo> dic_GridCols ;
DataBind() 里面主要分为两个部分,第一部分绘制页眉,第二部分就是循环数据了。
#region 输出页眉
str.Append("<TR class=\"css_GridTR\">");
foreach (KeyValuePair<int, GridColumnsInfo> entry in dic_GridCols)
{
str.Append("<TD>");
str.Append(((GridColumnsInfo)entry.Value).ColName);
str.Append("</TD>");
}
str.Append("</TR>");
#endregion
然后是循环输出数据,感觉这些也没有什么好说的,自己都觉得挺苦燥的。还是说一下行交替颜色的实现方法吧。用控件的形式输出一个table,首先要处理的就是样式,表格的样式要足够的灵活,否则的话就会有不好用的感觉。GridView用了很多的属性来进行描述,这个太复杂了,不和人家学了,来个简单一点的吧。样式/CSS,恩,就交给CSS来处理吧,定义几个css:
css_Grid1 :描绘table,
css_GridTR:描绘页眉,
td:控制td,
css_TR_c1、css_TR_c2、css_TR_c3...css_TR_cn: 来定义行交替色,这个数量就看要用多少种颜色来进行
交替了。
css_TR_move :鼠标经过时的样式;
css_TR_CK: 鼠标单击杭的样式。
最后就是写几个js函数来控制鼠标经过和单击的效果。
这里有演示效果。/article/4599785.html
好像有点乱。这里主要是想说如何根据配置信息来显示table,但是好像变成了介绍如何实现行的交替变色和点击行变色了。
在下面就要做表单控件了。整理成一个完整一点的示例,在提供源码吧。
附源码:
[DefaultProperty("Text")]
[ToolboxData("<{0}:myGrid runat=server></{0}:myGrid>")]
public class myGrid : DataBoundControl
相关文章推荐
- 一个页面搞定几乎所有的列表需求的实现思路和一点代码。
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 从需求到代码实现的一个思路总结
- 正则表达式应用--提取CSDN所有下载资源页面URl的思路与代码实现
- 用原生JS实现一个轮播(包含全部代码和详细思路)
- 一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- 一句代码搞定,所有页面点击空白处隐藏键盘
- 编写一个项目,实现页面之间切换时的动画效果。上传代码并描述步骤
- 复杂导航栏页面实现的一点思路
- 网站的所有页面底部多出来了一个js代码
- 用python实现的可以拷贝或剪切一个文件列表中的所有文件
- 第一次用需求思路步骤的方式写代码,记录下,我的一个新的起点,思维又一次转变
- RecyclerView Adapter 优雅封装,一个Adapter搞定所有列表
- Java简单实现爬虫技术,抓取整个整个网站所有链接+图片+文件(思路+代码)
- 如何用Mvc实现一个列表页面-异步加载
- 用一个RecycleView实现订单列表页面
- PHP登陆后跳转到登陆前页面实现思路及代码
- 验证一个ASP.NET应用程序和页面的生命周期的实现代码
- Android TableLayout数据列表的回显清空实现思路及代码