url传递数组问题

来源:互联网 发布:知羽电子相册破解版 编辑:程序博客网 时间:2024/06/07 00:11
在一个页面(我这里是个网格Grid)里面,选中多条记录,点击一个按钮(我这里是"借阅"按钮),然后跳转到另外一个页面,把上个页面选中的记录给显示出来,js代码是怎么实现这些功能的?

问题解决:

在网上搜了下,这里就牵扯到了一个经常遇到的问题,即:url传递数组问题。而经常用到这方面的,是分页显示这个技术。一般传参数不外乎:url,form,session,一般把数组合成一个字符序列,如"value1,value2,……,valueN",后台页再用split折分为数组,到下一页面再处理。

思路一:

将数据放到表单里,不过属性都要是hidden的。 
用户点击链接的时候,用javascript模拟点击submit按钮,提交表单里的内容。OK! 

思路二:
使用QueryString 
使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下: 
1,使用控件创建web表单(form) 
2,创建可以返回表单的按钮和链接按钮 
3,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量 
4,在保存的URL里添加QueryString参数 
5,使用Response.Redirect重定向到上面保存的URL 
下面的代码片断演示了如何实现这个方法: 
源页面代码: 
private void Button1_Click (object sender, System.EventArgs e) 

string url; 
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; 
Response.Redirect(url); 

目标页面代码: 
private void Page_Load (object sender, System.EventArgs e) 

Label1.Text=Request.QueryString["name"]; 
Label2.Text=Request.QueryString["email"]; 



思路三:
使用Session变量 
使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下: 
1,在页面里添加必要的控件 
2,创建可以返回表单的按钮和链接按钮 
3,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里 
4,使用Response.Redirect方法重定向到另一个页面 
5,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它 
下面的代码片断演示了如何实现这个方法: 
源页面代码: 
private void Button1_Click (object sender, System.EventArgs e) 

//textbox1 and textbox2 are webform 
//controls 
Session["name"]=TextBox1.Text; 
Session["email"]=TextBox2.Text; 
Server.Transfer("anotherwebform.aspx"); 

目标页面代码: 
private void Page_Load (object sender, System.EventArgs e) 

Label1.Text=Session["name"].ToString(); 
Label2.Text=Session["email"].ToString(); 
Session.Remove("name"); 
Session.Remove("email"); 



思路四:
使用Server.Transfer 
这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下: 
1,在页面里添加必要的控件 
2,创建返回值的Get属性过程 
3,创建可以返回表单的按钮和链接按钮 
4,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面 
5,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了 
以下代码综合实现上述步骤过程的代码: 
源页面代码: 
把以下的代码添加到页面中 
public string Name 

get 

return TextBox1.Text; 



public string EMail 

get 

return TextBox2.Text; 


然后调用Server.Transfer方法 
private void Button1_Click (object sender, System.EventArgs e) 

Server.Transfer("anotherwebform.aspx"); 

目标页面代码: 
private void Page_Load (object sender, System.EventArgs e) 

//create instance of source web form 
WebForm1 wf1; 
//get reference to current handler instance 
wf1=(WebForm1)Context.Handler; 
Label1.Text=wf1.Name; 
Label2.Text=wf1.EMail; 

思路五:

var thisGrid=GetGrid();
var rootTable=thisGrid.RootTable;
var checkRows=rootTable.GetCheckedRows();//你选中的所有行对象的集合

for(var r=0;r<checkRows.length;r++)
{
KeyId=checkRows[r].keyValue;//这个是主键Id

}


转自: http://blog.csdn.net/miao2313/article/details/6864912

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕了有盆腔积液怎么办 多囊怀孕不想要怎么办 6个月婴儿大小眼怎么办 健身教练岁数大了以后怎么办 超变战陀玩具手柄坏了怎么办 飓风战魂三陀螺中轴坏了怎么办 怎么办晚安角和铁陀螺 白衣服染上荧光剂了怎么办 指尖陀螺不亮了怎么办 手指陀螺不转了怎么办 月经推迟私处还老是流水怎么办 苹果手机刷机后忘记id密码怎么办 锤基意外怀孕怎么办零6 职场遇到心机婊怎么办 高二会考没过怎么办 保险柜没电了打不开怎么办 保险柜没有电了打不开怎么办 小保险箱没电了怎么办 bim墙的颜色反了怎么办 眼睛大但是无神怎么办 吃了凉的胃难受怎么办 吃凉东西胃疼怎么办 游戏只有一个分辨率选项怎么办 玩游戏心态易崩怎么办 打游戏心态炸了怎么办 赛鸽比赛回来拉稀怎么办 鸽子拉竹节水便怎么办 新买的鸽子拉稀怎么办 信鸽羽毛上长了虫子怎么办 羊肉煮熟了太硬怎么办 切菜不小心切到手指怎么办 打荷盘子端错了怎么办 学厨师不会翻锅怎么办? 在饭店上班不给工资怎么办 炒菜的左手拿不起锅怎么办?? 厨师想尽快上手炒菜怎么办? 空调吹的肩膀痛怎么办 学厨师翻锅不会怎么办 肋软骨隆鼻太硬怎么办 百度云下载速度慢怎么办 买的种子没出怎么办