最近几个月一直在做些打杂维护的工作,博客更新得也不勤。转眼2011年将要过去了,希望来年能找回自己的激情。

这两天做了两个JS控件,一个用于选择多项的List,一个显示分页页码链接等信息。一年多来一直在用JQuery,重新拾一下快忘了的基础JavaScript,顺便用在维护的项目上。

在写一个查询数据页面时,由于列很多,所以又创建了一设置页面,来选择显示的列。

开始时是用一个个选择框实现,像这样:

image 

所有的Checkbox的Name属性都一样,Value就是列的名称。在检测页面回发时,就可以通过Request[Name]获取到选中的值。这种方式优点是实现简单,生成的HTML代码:

<span>
    <input type="checkbox" value="类别" name="Columns" id="c0" />
    <label for="c0">类别</label>
</span>
<span>
    <input type="checkbox" value="名称" name="Columns" id="c1" />
    <label for="c1">名称</label>
</span>
<span>
    <input type="checkbox" value="尺寸" name="Columns" id="c2" />
    <label for="c2">尺寸</label>
</span>

缺点是不能选择列的顺序,因此这种场合需要更给力的实现。于是我想到了ListBox-一个Asp.Net控件,古老的项目中还能见到它。虽然现在基本不会用了,但现在大家都用前端JavaScript实现它表现的形式和业务逻辑。我从网上找到一个实现,优化下结构和浏览器兼容性,展示一下:

image

这种方式要写一些Javascript,其实不算复杂,用不着JQuery。在前端的提交事件中,将选中的项写入到一个隐藏域中,后台就可以读取到这些值。

下面是分布控件的截图。

未命名

当页数比较多时,只显示一定数目的页链接。点击<<或>>可以显示前面或后面的页。

数据展示页的分页可以分为参数方式和Ajax方式,前者需要对每个链接生成一个地址,后者需要执行一个JS函数。因此我定义了一个Pager对象,存储分页的参数。

        var pager = {
Total: 555, //总记录数
Size: 20, //每页记录数
LinkNumber: 10, //显示链接数
//LinkAction: "#p={0}" //链接形式
LinkAction: function (n) { document.title = n }, //执行JS函数形式
Current:18 //当前页
};

根据typeof(pager.LinkAction)==’string’,判断是否是纯链接。若不是,说明是Ajax刷新数据,页面不需要刷新,要复杂一些。

做了这两个控件后,前端的感觉又回来了。

下载地址:https://files.cnblogs.com/XmNotes/Pager%26List.zip

下面两个应用没有JavaScript,是纯CSS的效果。我从网上借鉴的,用在今年的项目中,真得很不错、在这里再回顾一下,希望新一年里能有更多的同行用上它们。新的一年里,让Web更美好,工作更有成就感。

一个是层级菜单,前面文章提到过:

http://www.cnblogs.com/XmNotes/archive/2011/04/14/2015980.html

另一个是将页脚固定在底部的技术,在这篇文章中有非常详细的介绍:http://blog.jobbole.com/10408/

 

对今年前端工作一些回顾,2012年将到了,我将把前端的学习重心放在HTML5和CSS3上,希望新年里继续与大家,与博客园一起进步。

posted on 2011-12-30 17:51  小城故事  阅读(1810)  评论(0编辑  收藏  举报