新足迹

 找回密码
 注册

精华好帖回顾

· 那些阴晴圆缺的日子 - 杀我不死令我更强 (2009-12-15) 西关少爷 · Secret (2013-9-25) braindev
· 【参加活动】手机摄影大赛-- 堪培拉,爱上它 (2015-2-7) workflow · 三年理财经验谈--流水帐 (2007-12-21) 大飞熊
Advertisement
Advertisement
查看: 1567|回复: 26

asp.net data shared by different page [复制链接]

发表于 2011-6-23 13:31 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
开始做ASP.NET 的page了,感觉还找不到门路。

假如第一张page有几个text box, 一个button, 然后button click query data into datatable, 如果有data的话,这些data应该在第二张page显示出来。请问如何让这个datatable shared by 第二张page呢?
持不同股见者...
Advertisement
Advertisement

发表于 2011-6-23 13:40 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你那个第二张page是什么意思?

发表于 2011-6-23 13:45 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2011-6-23 13:40 发表
你那个第二张page是什么意思?

webpage.

第一张 有text box and button, 然后做一个query,
第二张是 Gridview,显示 a list of data.
持不同股见者...

发表于 2011-6-23 13:49 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一般你可以把你的这个button的target设为第二个页面, 这样submit的时候就直接提交到第二个页面, 你就在第二个页面中load data. 或者你就直接把结果在第一页中显示出来,  千万不要在第一个页面load datatable然后存到session中, 再到第二个页面显示出来, 人多的话内存很容易就暴了.

评分

参与人数 1积分 +2 收起 理由
hornsay + 2 感谢分享

查看全部评分

发表于 2011-6-23 13:49 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果只是关于查询并显示
估计这里的同学会给出几十个方案

发表于 2011-6-23 13:49 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-6-23 13:45 发表

webpage.

第一张 有text box and button, 然后做一个query,
第二张是 Gridview,显示 a list of data.


是web form吧?postback到同一个page,然后page 的life cycle,处理你的事件load datatable, bind gridview,最后处理一下显隐的问题。
Advertisement
Advertisement

发表于 2011-6-23 13:54 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huazhb 于 2011-6-23 13:49 发表
一般你可以把你的这个button的target设为第二个页面, 这样submit的时候就直接提交到第二个页面, 你就在第二个页面中load data. 或者你就直接把结果在第一页中显示出来,  千万不要在第一个页面load datatable然后存到session中, 再到第二个页面显示出来, 人多的话内存很容易就暴了.


OK, 理解了,所以最好还是把第一张的query script pass 到第二张。我是想到这一点的,只是如果没有data的话,也就不会show第二个页面。 所以假如只pass script的话,等于要做二次query.
持不同股见者...

发表于 2011-6-23 14:00 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2011-6-23 13:49 发表


是web form吧?postback到同一个page,然后page 的life cycle,处理你的事件load datatable, bind gridview,最后处理一下显隐的问题。

是web form.

只能postback到同一个page? 好难啊,现在还没有这些概念。
持不同股见者...
头像被屏蔽

禁止发言

发表于 2011-6-23 14:10 |显示全部楼层
此文章由 linkspeed 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 linkspeed 所有!转贴必须注明作者、出处和本声明,并保持内容完整
asp.net web form 好像不能直接把form发到第二个页里。
这个不像php和asp.net mvc。
只能post back到自己这个页,处理完毕存好了。
再redirect到第二个页。
你可以存session里,也可以存数据库或者某个文件里。

发表于 2011-6-23 14:17 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
同学阿, 你可以看看asp:button的属性, 有个叫postbackurl的, 就是做这个的

发表于 2011-6-23 14:20 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-6-23 13:54 发表


OK, 理解了,所以最好还是把第一张的query script pass 到第二张。我是想到这一点的,只是如果没有data的话,也就不会show第二个页面。 所以假如只pass script的话,等于要做二次query.


所以一般来说我们都把查询和结果放在同一个页面, 两个页面就是要牵扯到这些问题. 如果第二个页面没有结果的话,你可以redirect到第一个页面,但是查询的值就没有了, 或者你输出一个javascript:back()让浏览器直接回第一个页面, 这样原来的查询值还在

评分

参与人数 1积分 +2 收起 理由
hornsay + 2 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2011-6-23 14:33 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 huazhb 于 2011-6-23 14:20 发表


所以一般来说我们都把查询和结果放在同一个页面, 两个页面就是要牵扯到这些问题. 如果第二个页面没有结果的话,你可以redirect到第一个页面,但是查询的值就没有了, 或者你输出一个javascript:back()让浏览器直接回第一个页面, 这样原来的查询值还在


谢谢。我原来打算要做3张page, 第一张给user 作一个query, 如果有data的话,在第二张显示list of data, 然后click one record后,在第三张显示record detail.

感觉有点疑惑的是,每一张page都要有自己的dataset, connection之类的,他们就没法share吗?
持不同股见者...

发表于 2011-6-23 14:38 |显示全部楼层

回复 hornsay 12# 帖子

此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你数据读取、存写的代码应该放在单独的一个class里面,不要和Aspx的codebehind混在一起。


对于一开始的那个问题,【足迹.net四大金刚】之一的【典】大哥说的对,至少有十几种方法。

假设你第一个页面的textbox是你query的filter的话,你可以用Server.Transfer(“nextpage.aspx”,True)来把那个数值传递到下一个页面。(和最常用的Response.Redirect()的区别详见 http://www.developer.com/net/asp ... esponseRedirect.htm

评分

参与人数 1积分 +3 收起 理由
+ 3 乱说,我的.Net水平只是入门级别的

查看全部评分

发表于 2011-6-23 14:52 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-6-23 14:33 发表


谢谢。我原来打算要做3张page, 第一张给user 作一个query, 如果有data的话,在第二张显示list of data, 然后click one record后,在第三张显示record detail.

感觉有点疑惑的是,每一张page都要有自己的dataset, connection之类的,他们就没法share吗?


可以share, 你要用session放到内存里了. 应为http每次的request都是没有状态的. 除非你把数据放到页面里, 就是Viewstate里, 那viewstate就太大了

发表于 2011-6-23 15:03 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 BJ-KING 于 2011-6-23 14:38 发表
你数据读取、存写的代码应该放在单独的一个class里面,不要和Aspx的codebehind混在一起。


对于一开始的那个问题,【足迹.net四大金刚】之一的【典】大哥说的对,至少有十几种方法。

假设你第一个页面的textbox是你query ...


我现在是有一个class来handle data access, e.g bool MyClass.getCustomer(string s), 假如有customer, 我把它fill到MyClass.CustTable. 我希望第二张page的GridView binding 到 MyClass.CustTable. 这样在显示第二张page时就不用再做query, 但是第一张page 里的 MyClass instance 已经 out off lifecycle了。

我不知道通常是如何处理的。
持不同股见者...

发表于 2011-6-23 15:05 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-6-23 15:03 发表


我现在是有一个class来handle data access, e.g bool MyClass.getCustomer(string s), 假如有customer, 我把它fill到MyClass.CustTable. 我希望第二张page的GridView binding 到 MyClass.CustTable. 这样在显示第 ...


他们都建议你用session了
Advertisement
Advertisement

发表于 2011-6-23 15:10 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实这也是很经典一种应用场合,用什么方法都无所谓
除了post back /  redirect / gridview 那一套外,
还可以用ajax ....只用一个页面足够

用ajax我想到两种思路:要数据还是部件
1)让服务器传回数据 / json or XML, 再在client side 用javascript构建grid, 这种方式对网络来说负担最轻
2) 让服务器传回一个grid 部件,客户端把这个部件加到页面上
从网络负担来说这种方法也很好

评分

参与人数 2积分 +5 收起 理由
hornsay + 2 感谢分享
BJ-KING + 3 金刚出手,不同凡响!

查看全部评分

发表于 2011-6-23 15:12 |显示全部楼层

回复 hornsay 15# 帖子

此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
1, 用viewstate传递的话,如果数据很多,页面就会很大,你view source的话可以看到拿一大块encode后viewstate的数据;

2,如果用session的话,服务器端如果做load balance的话,session就会出错了。

3,还有什么hidden fields, URL-rewriting就省略了。


具体选1还是2,要看你实际的情况。

评分

参与人数 1积分 +2 收起 理由
hornsay + 2 感谢分享

查看全部评分

头像被屏蔽

禁止发言

发表于 2011-6-23 15:55 |显示全部楼层
此文章由 linkspeed 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 linkspeed 所有!转贴必须注明作者、出处和本声明,并保持内容完整
为是么不弄成1个页呢?form和grid一个开1个隐藏就可以了。
我觉得webform设计的初衷就是不要你自己postback这里那里。把前台后台当作一个control来开发。

评分

参与人数 1积分 +2 收起 理由
hornsay + 2 感谢分享

查看全部评分

发表于 2011-6-23 16:12 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果你真想走webform的路,也要用asp.net webform mvp

http://webformsmvp.com/

好处是:

1.在presenter可以用unit test。

2.view里面,model可见,这样就可以在aspx中用根mvc同样的方法,用c#+html markup来render page, 从而完全避免asp.net server control带来的弊病。

不足的地方:

1.url rounting功能没有,你要自己写.

2.view不能像mvc一样用aspx/razor。。。,它只能用aspx。

3.用到一点user control level的life cycle,但也可以忍受。

4.其他的功能没有mvc那么强和灵活,但比传统意义上的webform已经好很多了。

评分

参与人数 1积分 +2 收起 理由
hornsay + 2 感谢分享

查看全部评分

发表于 2011-6-23 16:19 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大家继续,看看到底有多少方案
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-6-23 16:27 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
脑科砖家 asp.net 不是都做了好多年了吗?

发表于 2011-6-23 17:30 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 linkspeed 于 2011-6-23 15:55 发表
为是么不弄成1个页呢?form和grid一个开1个隐藏就可以了。
我觉得webform设计的初衷就是不要你自己postback这里那里。把前台后台当作一个control来开发。


Very good idea! 太棒了,还没想到可以这么做。 刚才我把class 存到了session里,已经working, 不过你的方法更好。
持不同股见者...

发表于 2011-6-23 17:37 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-6-23 16:27 发表
脑科砖家 asp.net 不是都做了好多年了吗?

命苦啊。

断断续续做了几个月。一个礼拜只去电脑公司做2天,其中还要做一些Delphi的东西。前面只做过xml data return, 还蛮简单,现在是第一次接触control, 真的要命,太多东西要学。
持不同股见者...

发表于 2011-6-23 17:41 |显示全部楼层

回复 hornsay 24# 帖子

此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
没事,慢慢学。有不懂的可以来这里问【足迹.net左右护法】(双胸)、【足迹.net四大金刚】、【五行旗】、【五散人】,Etc。大家一起交流、一起进步。



足迹的这个【IT专业板块】还是很不错的,我个人感觉可以和【新闻版块】&目前的【有间茶馆】并成为“3大拳头版块”了

评分

参与人数 1积分 +3 收起 理由
乱码 + 3 haha, 你真能整

查看全部评分

发表于 2011-6-24 10:20 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果讲效率,传统的webform的效率是很低的,网络传送量经常是以100K为起点的,对服务器的负担也很重,我们假设服务器的工作量是100

要是只在客户和服务器间传递数据,那么网络传送量一般可以降到1K 级别,服务器的工作量可能也就是10左右

以上两者一比较,效率是提高10倍/100倍的关系,当然具体的实际情况比较复杂


关于服务器向客户端发送html部件,又有几种方式
1) aspx
2) handle (ashx)
3) webmethod
4) service
参见以下的文章
http://www.mikesdotnetting.com/A ... ry-AJAX-and-ASP.NET

评分

参与人数 1积分 +3 收起 理由
flyspirit + 3 很全面了。

查看全部评分

Advertisement
Advertisement

发表于 2011-6-24 10:43 |显示全部楼层
此文章由 huazhb 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 huazhb 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实webform主要的问题是ViewState比较大, 这点你可以压缩一下, 可以小很多的. 至于Postback的问题, 那可以用AJAX来解决. WebForm的服务器端控件还是减少了很多工作量的. 当然如果是做internet网站, WebForm的服务器控件还是少用一些或者把ViewState关闭.

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部