富贵资源网 Design By www.hznty.com
问:为什么要“自制”?不是有现成的控件吗?
答:在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中数据项的填充。
答:在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中数据项的填充。
富贵资源网 Design By www.hznty.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
富贵资源网 Design By www.hznty.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?