CheckBox跨页选择实现思路
发布:apollo | 发布时间: 2009年11月18日前几天在过去跟设备处的老师沟通的过程中,提出有一个需求就是需要对Checkbox实现跨页选择的功能,之前类似的东西也并没有做过,但是想想既然客户都提的出这样的需求,功能上应该是已经存在的,也肯定是有看见过类似的东西的,就直接先答应了回来进行技术处理。
第一次Bing让我这么的失望,居然找不到类似的记录,后来还是返回常用的Google,有幸可以找到一些类似的代码片段,但是好像并不能解决我遇到的问题,因为哪些代码不熟悉好像都是JSP的,也有提出用Cookies来保存状态的,但是好像处理Cookies也不简单(应该说是具麻烦的那种)。浏览中发现有一个思路挺好的,使用隐藏值来保存选择的Checkbox值,下面我先发布实现这个功能要用到的代码(Asp的话稍微做下修改应该也是可行的)。
1、创建一个隐藏值:
<input type="hidden" id="SelectID" name="SelectID" value="<%=SelectID%>" />,其中SelectID为后台定义为public string SelectID = string.Empty;
2、Aspx页面相关代码:
<input type="checkbox" id="CheckBox1" name="CheckBox1" value="1">这句很重要,否则你在删除的时候将不能清除选择的值。
<script language="javascript" type="text/javascript">
//设置页面的Checkbox选择状态
$(document).ready(function() {
SelectValue(document.form1);
});
//这里是实现的功能,翻页之后判断该页面是否有Checkbox为选择的状态
function SelectValue(obj)
{
obj = eval(obj);
var _Sid=$("#SelectID").val();
for (var i=0; i<obj.elements.length; i++){
if (obj.elements.type == "checkbox" && obj.elements.name == "CheckBox1") {
if (_Sid.indexOf(obj.elements.value+",")!=-1)
{
obj.elements.checked = true;
}
}
}
}
//清除Checkbox选择的值,这里用了replace函数简化代码的操作
function ClearSelectValue(obj)
{
var _Sid=$("#SelectID").val();
if (obj.checked==true)
{
_Sid+=obj.value+",";
$("#SelectID").attr("value", _Sid);
}
else
{
_Sid=_Sid.replace(obj.value+",","");
$("#SelectID").attr("value", _Sid);
}
}
</script>
3、Aspx.Cs相关代码:
protected void PageNavigator1_PageChange(object sender, int PageIndex)
{
GridViewDataBind(PageIndex);
SelectID = Request.Form["SelectID"];
string ChkValue = Request.Params["CheckBox1"];
if (!string.IsNullOrEmpty(ChkValue))
{
string[] _ChkValue = ChkValue.Split(',');
for (int i = 0; i < _ChkValue.Length; i++)
{
if (SelectID.IndexOf(_ChkValue + ',') == -1)
{
SelectID += _ChkValue+",";
}
}
}
}
以上这段代码仅在翻页的时候响应
第一次Bing让我这么的失望,居然找不到类似的记录,后来还是返回常用的Google,有幸可以找到一些类似的代码片段,但是好像并不能解决我遇到的问题,因为哪些代码不熟悉好像都是JSP的,也有提出用Cookies来保存状态的,但是好像处理Cookies也不简单(应该说是具麻烦的那种)。浏览中发现有一个思路挺好的,使用隐藏值来保存选择的Checkbox值,下面我先发布实现这个功能要用到的代码(Asp的话稍微做下修改应该也是可行的)。
1、创建一个隐藏值:
<input type="hidden" id="SelectID" name="SelectID" value="<%=SelectID%>" />,其中SelectID为后台定义为public string SelectID = string.Empty;
2、Aspx页面相关代码:
<input type="checkbox" id="CheckBox1" name="CheckBox1" value="1">这句很重要,否则你在删除的时候将不能清除选择的值。
<script language="javascript" type="text/javascript">
//设置页面的Checkbox选择状态
$(document).ready(function() {
SelectValue(document.form1);
});
//这里是实现的功能,翻页之后判断该页面是否有Checkbox为选择的状态
function SelectValue(obj)
{
obj = eval(obj);
var _Sid=$("#SelectID").val();
for (var i=0; i<obj.elements.length; i++){
if (obj.elements.type == "checkbox" && obj.elements.name == "CheckBox1") {
if (_Sid.indexOf(obj.elements.value+",")!=-1)
{
obj.elements.checked = true;
}
}
}
}
//清除Checkbox选择的值,这里用了replace函数简化代码的操作
function ClearSelectValue(obj)
{
var _Sid=$("#SelectID").val();
if (obj.checked==true)
{
_Sid+=obj.value+",";
$("#SelectID").attr("value", _Sid);
}
else
{
_Sid=_Sid.replace(obj.value+",","");
$("#SelectID").attr("value", _Sid);
}
}
</script>
3、Aspx.Cs相关代码:
protected void PageNavigator1_PageChange(object sender, int PageIndex)
{
GridViewDataBind(PageIndex);
SelectID = Request.Form["SelectID"];
string ChkValue = Request.Params["CheckBox1"];
if (!string.IsNullOrEmpty(ChkValue))
{
string[] _ChkValue = ChkValue.Split(',');
for (int i = 0; i < _ChkValue.Length; i++)
{
if (SelectID.IndexOf(_ChkValue + ',') == -1)
{
SelectID += _ChkValue+",";
}
}
}
}
以上这段代码仅在翻页的时候响应
发布:apollo | 分类:程序代码 | 评论:0 | 引用:0 | 浏览:
| TrackBack引用地址
- 相关文章:
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





