jQuery MiniUI

标题: 这个js不支持Cookie吧。 [打印本页]

作者: guoweidong    时间: 2012-9-2 16:19:11     标题: 这个js不支持Cookie吧。

本帖最后由 guoweidong 于 2012-9-2 17:56 编辑
  1. function add() {
  2.         var items = grid1.getSelecteds();
  3.         var array = new Array();
  4.         if ($.cookie("items") != null) {
  5.             array = $.cookie("items");
  6.         }
  7.         array.add(items);
  8.         array=$.cookie("items",array);
  9.         grid1.removeSelected();
  10.         grid2.setData(array);
  11.     }
复制代码
上面是一段不能通过的代码,官方能帮忙看看吗?

不能直接使用Cookie做临时保存吧。

我想把前台选项通过Cookie保存下来,然后一起提交到后台处理。

用什么方法能保存下来DataGrid的已选的,然后再过滤了已选的行。在右边选中后的数据左边不显示出来。

作者: guoweidong    时间: 2012-9-2 18:55:58

本帖最后由 guoweidong 于 2012-9-2 19:05 编辑
  1. function add() {
  2.         var items = grid1.getSelecteds();
  3.         var array="";        
  4.         if ($.cookie("items") != null) {
  5.             array = $.cookie("items")+",";
  6.         }
  7.         for (var i = 0; i < items.length; i++) {
  8.             array+=mini.encode(items[i])+",";
  9.         }
  10.         if (array != "") {
  11.             array = array.substring(0, array.length-1);
  12.             $.cookie("items", array);
  13.             array = mini.decode("["+array+"]");
  14.         }
  15.         alert(mini.encode(array));
  16.         grid1.removeSelected();
  17.         grid2.setData(array);
  18.     }
复制代码

上面的代码测试通过了,但还存在问题,好像cookie的长度好像不够。到了第6条就不能继续添加了。
测试了,不长度的问题,是_index 的问题。有重复的不能加了。

作者: guoweidong    时间: 2012-9-2 20:22:14

guoweidong 发表于 2012-9-2 18:55
上面的代码测试通过了,但还存在问题,好像cookie的长度好像不够。到了第6条就不能继续添加了。
测试了, ...
  1. mini.Cookie.set,mini.Cookie.get,mini.Cookie.del,

  2. 结果还是一样,应该还是Cookie长度的问题。
复制代码


作者: guoweidong    时间: 2012-9-2 21:31:14

本帖最后由 guoweidong 于 2012-9-2 21:32 编辑
guoweidong 发表于 2012-9-2 20:22
  1. function add() {
  2.         var items = grid1.getSelecteds();
  3.         var array = "";
  4.         var oldarrlen = 0;
  5.         var arrlen = 0;         
  6.         if (mini.Cookie.get("Itemlen") != null) {
  7.             for (var i = 0; i < mini.sortTypes.int(mini.Cookie.get("Itemlen")) ; i++)
  8.             {
  9.                 array += mini.Cookie.get("items"+i) + ",";
  10.             }            
  11.             oldarrlen = mini.sortTypes.int(mini.Cookie.get("Itemlen"));
  12.         }
  13.         for (var i = 0; i < items.length; i++) {
  14.             mini.Cookie.set("items" + (oldarrlen+i), mini.encode(items[i]));
  15.             array+=mini.encode(items[i])+",";
  16.         }
  17.         if (array != "") {
  18.             arrlen = oldarrlen + items.length;  
  19.             array = array.substring(0, array.length - 1);
  20.             mini.Cookie.set("Itemlen", arrlen);
  21.             array = mini.decode("["+array+"]");
  22.         }      
  23.         grid1.removeSelected();
  24.         grid2.setData(array);
  25.     }
复制代码

以上是最终的方法,调试了好久,但最终还是不行,我决定改方法了,调用Session了。到了第13条数据以后就出问题了,就乱了。
作者: guoweidong    时间: 2012-9-3 13:20:01

本帖最后由 guoweidong 于 2012-9-3 13:24 编辑
  1. function add() {
  2.         var items = grid1.getSelecteds();
  3.         //获取选中的数据
  4.         $.post("@Url.Action("AddPlan","Business")", { data: mini.encode(items) }, function (result) {
  5.             grid1.reload();
  6.             grid2.reload();
  7.         });      
  8.     }  
复制代码
对应的后台操作
  1. public string AddPlan(string data)
  2.         {
  3.             List<SubProductsView> tmplist;
  4.             if (Session["subpro"] != null) tmplist = Session["subpro"] as List<SubProductsView>;           
  5.             else tmplist = new List<SubProductsView>();
  6.             JavaScriptSerializer MySerializer = new JavaScriptSerializer();
  7.             List<SubProductsView> listsubpro1 = MySerializer.Deserialize<List<SubProductsView>>(data);
  8.             foreach (SubProductsView spv in listsubpro1)
  9.             {
  10.                 tmplist.Add(spv);
  11.             }
  12.             Session["subpro"] = tmplist;
  13.             return listsubpro1[0].ProductName;
  14.         }
复制代码

虽然效果没有前台执行好,但是功能还是做到了。本来想直接传SubProductsView对像传后台的,但是好像不能序列化,只好用json字符串序列一下了。
作者: niko    时间: 2012-9-3 13:44:19

1)做本页面内数据保存,你可以不用cookie,只用一个全局的JS变量就好了。
2)cookie的保存长度是有限的

另外,请把你的功能需求描述清楚,实现没你想象的那么复杂。
作者: guoweidong    时间: 2012-9-3 13:54:14

niko 发表于 2012-9-3 13:44
1)做本页面内数据保存,你可以不用cookie,只用一个全局的JS变量就好了。
2)cookie的保存长度是有限的

算了,就这样了,数所量多,还是要调用后台的搜索过滤~
作者: niko    时间: 2012-9-3 16:00:10

不要把功能做复杂化 :)




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2