asp.net 自制的单选、多选列表实现代码

 更新时间:2009年08月21日 11:35:31   作者:  
在ASP.NET的页面上,ListBox最终是渲染成select元素,而CheckListBox最终被渲染成div或者是table,使得二者的样式无法统一,或者说要统一很麻烦。
问:为什么要“自制”?不是有现成的控件吗?
答:在ASP.NET的页面上,ListBox最终是渲染成select元素,而CheckListBox最终被渲染成div或者是table,使得二者的样式无法统一,或者说要统一很麻烦。
解决:
于是,决定干脆自行组合一些元素,实现单选列表、多选列表的统一样式。
首先,无论是单选列表还是多选列表,都用一个有边框的div来做容器:
<div class="list"></div>
然后,在这个div中添加数据项。为了在响应onclick事件时,能够遍历数据项,进而做一些样式上的控制,我需要把各个数据项的name属性设为一样的,然后用getElementsByName获取(这种办法我在复选框的全选功能上常用)。然而,经过实践,发现div、span均无name属性,最终找到用锚点,也就是<a>标记,可以实现。
例如:
复制代码 代码如下:

<div id="divDepartments" class="list">
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门1</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门2</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门3</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门4</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门5</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门6</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门7</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门8</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门9</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门10</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门11</a>
<a name="aDep" style="width:100%" onclick="ItemClicked(this);">部门12</a>
</div>

其中,list样式:
复制代码 代码如下:

.list
{
overflow-y:scroll;
width:120px;
height:150px;
padding:3px;
border:solid 1px #AFAFAF;
background-color: #ffffff;
cursor: pointer;
}

ItemClicked函数用来响应click事件。下面的代码只是做一些样式上的变化,还可继续添加加载数据的内容:
复制代码 代码如下:

function ItemClicked(a){
a.style.backgroundColor="#EEEEEE";
as=document.getElementsByName(a.name);
for(i=0;i<as.length;i++){
if(as[i]!=a){as[i].style.backgroundColor="#FFFFFF";}
}
}

带有复选框的多选列表也大同小异,只是这里由于遍历数据项时,只要对复选框遍历即可,故可以使用div做数据项的容器了:
复制代码 代码如下:

<div id="divPersons" class="list">
<div><input type="checkbox" />人员1</div>
<div><input type="checkbox" />人员2</div>
<div><input type="checkbox" />人员3</div>
<div><input type="checkbox" />人员4</div>
<div><input type="checkbox" />人员5</div>
<div><input type="checkbox" />人员6</div>
<div><input type="checkbox" />人员7</div>
<div><input type="checkbox" />人员8</div>
<div><input type="checkbox" />人员9</div>
<div><input type="checkbox" />人员10</div>
<div><input type="checkbox" />人员11</div>
</div>

最后,关于数据的加载问题,在当前的具体问题中,我打算用Ajax.Updater,来实现对相应列表的div中数据项的填充。

相关文章

  • .net微信服务号发送红包

    .net微信服务号发送红包

    这篇文章主要为大家详细介绍了.net微信服务号发送红包的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • .NET学习笔记之默认依赖注入

    .NET学习笔记之默认依赖注入

    这篇文章主要给大家介绍了关于.NET学习笔记之默认依赖注入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 先装了FRAMEWORK,后装IIS导致asp.net页面无法访问的解决方法

    先装了FRAMEWORK,后装IIS导致asp.net页面无法访问的解决方法

    如果先装了FRAMEWORK,后装IIS。有可能没有在IIS中注册,就会导致在页面中无法访问的情况
    2012-01-01
  • ASP.NET 页生命周期概述(小结)

    ASP.NET 页生命周期概述(小结)

    了解个掌握ASP.NET页面生命周期是非常必要的,这有助于我们更加灵活的控制页面,以我们需要的方式编程开发。本文详细的介绍了ASP.NET 页生命周期,感兴趣的可以了解一下
    2018-11-11
  • 详解ASP.NET Core 处理 404 Not Found

    详解ASP.NET Core 处理 404 Not Found

    这篇文章主要介绍了详解ASP.NET Core 处理 404 Not Found,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付)

    ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付)

    这篇文章主要介绍了ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 关于.net环境下跨进程、高频率读写数据的问题

    关于.net环境下跨进程、高频率读写数据的问题

    最近老大教给我一个项目,项目要求高频次地读写数据,数据量也不是很大,难点在于这个规模的热点数据,变化非常频繁,下面把我的处理方法分享到脚本之家平台,对.net跨进程高频率读写数据相关知识感兴趣的朋友跟随小编一起学习下吧
    2021-05-05
  • .net微信开发 如何获取AccessToken

    .net微信开发 如何获取AccessToken

    这篇文章主要为大家详细介绍了微信开发中AccessToken的获取方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • IIS上部署Asp.net core Webapi的实现步骤

    IIS上部署Asp.net core Webapi的实现步骤

    ASP.NET Core Web API是构建RESTful应用程序的理想平台,本文主要介绍了IIS上部署Asp.net core Webapi的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • .net下实现Word动态填加数据打印

    .net下实现Word动态填加数据打印

    .net下实现Word动态填加数据打印...
    2007-04-04

最新评论