保存跨页面选择的数据

使用JAVASCRIPT操作COOKIE保存跨页面选择的数据,原理很简单:使用javascript把选中的数据写入cookie和一个隐藏控件(这样服务器端也可获取到选中的数据了),避免选中的数据在url上传递,带来潜在的危险。
在这个例子里最重要的是JS,如何获取数据和分页与JS实现方法是无关的,当然需要把Chebox控件的值设为要保存的数据。

<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " SaveValueOfMultiPages.aspx.cs "  Inherits = " test.DEMO.SaveValueOfMultiPages "   %>

<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< html xmlns = " http://www.w3.org/1999/xhtml "   >
< head runat = " server " >
    
< title > 多页面选择值 </ title >
    
< script language = " JAVASCRIPT "  type = " text/JavaScript " >
        var splitCharacter 
=  [ {id:1,name:"doll"} , {id:2,name:"doll;"} , {id:3,name:"doll="} , {id:4,name:"#ff0000"} ]; 
        

        var ObjSelectValue ; // 获取存放选中值的控件对象
        var ObjCheckBox ; // 获取CheckBox对象集合
        window.onload  =  function()
        
{
            ObjSelectValue 
= getObjByID("HdSelectedValues");  
            ObjCheckBox 
= getObjByName("ckBox");          
            CheckIn(getSelectValue());
        }
;
  
        
// 初始化选中信息
        function CheckIn(cookies) 
        
{  
           
for(var i=0;i<ObjCheckBox.length;i++)
           
{        
                
if(cookies.split(ObjCheckBox[i].value + ",").length > 1)
                
{   
                      ObjCheckBox[i].
checked = true;
                  }

           }

        }
        
        
// 添加或移出选中的值        
        function AddOrRemoveValues(objCkBox) 
        
{  
            
if(objCkBox.checked)
            

                var cookies 
= document.cookie;
                
if(cookies.split(splitCharacter[1].name).length == 1)
                
{
                    
if(cookies.split(splitCharacter[0].name).length > 1)
                    
{
                        cookies 
= getSelectValue();    
                        
if(cookies.split(",").length > 10//如果超过10个就不让选择,并提示
                        {
                           alert(
"最多只能对比10个!");
                           objCkBox.
checked = false;
                           
return;
                        }

                        
if(cookies.split(splitCharacter[3].name).length > 1)
                        
{
                            cookies 
= cookieStr.replace(splitCharacter[3].name,"");
                        }

                    }

                }
           
               ObjSelectValue.value 
+= objCkBox.value + ",";   
            }

            
else
            
{
                 ObjSelectValue.value 
= ObjSelectValue.value.replace(objCkBox.value+",","");
            }

            document.cookie 
= splitCharacter[2].name+ObjSelectValue.value;  
        }
    

        
// 清除选中的值
        function clearSelectValue() 
        
{           
           var cookies 
= getSelectValue();
           
for(var i=0;i<ObjCheckBox.length;i++)
           
{            
                
if(cookies.split(ObjCheckBox[i].value+",").length > 1)
                
{   
                      ObjCheckBox[i].
checked = false;
                  }

           }

           document.cookie 
= splitCharacter[2].name + "null";
           ObjSelectValue.value 
= "";
           alert(
"数据清空完成");
       }

           
        
// 获取选中的值
        function getSelectValue () 
        

            var ReturnValue 
= "";   
            var CookieString 
= document.cookie.split(splitCharacter[2].name);
               
if(CookieString.length > 1)   
            

                var CookieArray 
= CookieString[1].split(';'); 
                
if(CookieArray.length>0)
                
{
                    ReturnValue 
= CookieArray[0];   
                }

            }

            
else
            
{
                ReturnValue 
= "";
            }

            
if(ReturnValue.indexOf(","!= -1)
            
{
                ObjSelectValue.value 
= ReturnValue;
            }

            
return ReturnValue;  
        }

        function getObjByID(objID)
        
{
            
return document.getElementById(objID);
        }

        function getObjByName(objName)
        
{
            
return document.getElementsByName(objName);
        }

    
</ script >
</ head >
< body >
    
< form id = " form1 "  runat = " server " >
    
< div >
    
< input type = " button "  value = " clear check value "  onclick = " clearSelectValue(); " >
     
< table width = " 70% "  height = " 36 "  border = " 1 "  cellpadding = " 0 "  cellspacing = " 0 " >
        
< tr >
            
< td width = " 40px " > check </ td >
            
< td width = " 50% "  align = " left " > ShipName </ td >
            
< td align = " left " > ShipAddress </ td >
        
</ tr >
        
< asp:Repeater ID = " Repeater1 "  runat = " server " >
        
< ItemTemplate >
        
< tr >
            
< td >< input onclick = " AddOrRemoveValues(this) "  value = " <%# Eval( " OrderID " ) %> "  name = " ckBox "  type = " checkbox "   /></ td >
            
< td align = " left "  width = " 50% "   ><% # Eval( " ShipName " %></ td >
            
< td align = " left "   ><% # Eval( " ShipAddress " %></ td >
            
</ tr >
        
</ ItemTemplate >
        
</ asp:Repeater >  
        
     
</ table >  
    
</ div >
        
< asp:Literal ID = " ltPage "  runat = " server " ></ asp:Literal >
        
< input type = " hidden "  id = " HdSelectedValues "   />
    
</ form >
</ body >
</ html >
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值