查看: 915|回复: 6
|
关于 .Net 2.0 DetailView Control
[复制链接]
|
|
目前工作上接手新计划, 开始一个.Net project , 在Design 阶段 。
读了蛮多的技术文章, 和参考了网上的资源。
初步决定要用 MVC pattern , 配上 Business Object , Data Object 来实现 UI - Business Logic - Data Logic 分离的可塑性强的结构。
已经准备用 ObjectDataSource 跟 Customized Web User Control 来实现, 可是发现有个 control 叫 DetailView。 搜寻了网络, 类似是我要的东西, 奈何精力与时间有限, 没能作测试, 希望有用过的朋友, 可以告知DataView的pro 和 con , 和限制,问题等等。
另外, 有谁有是用 MVC + Business Object 的方式来写ASP.Net DB 程序, 也希望分享下您的设计概念作为参考。
谢谢。 |
|
|
|
|
|
|
|
发表于 11-10-2007 11:10 PM
|
显示全部楼层
什么是 MVC?
用 detail view 比较省时间
因为有 view, add, edit, delete 的 mode |
|
|
|
|
|
|
|
发表于 12-10-2007 09:30 AM
|
显示全部楼层
MVC 就是Model, View, Controller
是一个很好的设计架构.
我来谈谈我的.NET FRAMEWORK 2.0 的MVC 设计.
我们有个WINDOWS APPLICATION, 就是用MVC来设计. DATA ACCESS的LAYER是通过REMOTING连接到一个APPLICATION SERVER 上. 所以可以做到让MODEL控制逻辑,CONTROLLER运用逻辑,然后VIEW来显示DATA的目的.
在这里,我并不鼓励你在ASP.NET上实现MVC, 因为WEB-BASED的 APPLICATION本来就不适合MVC, 除非你是在.NET FRAMEWORK 3.0 (就是WPF-Windows Presentation Foundation)的基础上运行,使用XBAP 就能够达到WEB-BASED的MVC设计.
说回DETAILSVIEW, 你应该把所有ASP.NET的DATA CONTROL当成是一个VIEW, 从DETAILS VIEW来看,你可以把它想成是GRIDVIEW的详细版. 同样一个OBJECT DATA SOURCE,你若BIND到GRIDVIEW的话就是DISPLAY一整面, DETAILS VIEW的话就只DISPLAY一个RECORD一面.
你可以ENABLE PAGING, EDIT, DELETE和ADD NEW <--- ADD NEW 在GRIDVIEW里并不直接支援,这是DETAILSVIEW里的PRO.
CON就是, 如果你的用户直接使用DETAILSVIEW来游览,并没有附加SEARCH的功能,所以你必须自己在CODE里进行FILTER (其实GRIDVIEW也有这层问题). 而且, 即使用户只打算看第一个RECORD, 原则上来说DETAILSVIEW是把所有的RECORD都从OBJECT DATA SOURCE那里直接拿下来,所以你的VIEWSTATE就会变很大,影响你的用户的RESPONSE TIME.
要解决这个问题,可以上网参考ASP.NET Paged Retrieval of records. |
|
|
|
|
|
|
|
发表于 12-10-2007 11:44 AM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 19-10-2007 01:07 PM
|
显示全部楼层
原帖由 阿牙木 于 12-10-2007 09:30 AM 发表 
MVC 就是Model, View, Controller
是一个很好的设计架构.
我来谈谈我的.NET FRAMEWORK 2.0 的MVC 设计.
我们有个WINDOWS APPLICATION, 就是用MVC来设计. DATA ACCESS的LAYER是通过REMOTING连接到一个APP ...
多谢你详细的讲解。
因为我们原本的开发工具在这方面作到很容易开发的MVC model, 但不是Web based。
Web base 的 MVC 我也不要求多, 只要求ObjectDataSource 跟 Gridview, DetailView + Toolbar 可以以 MVC x协作己行了。
我想请问下, .Net 2.0 上, 能否把 Gridview 跟 Detail View 放在同一个页面 然后共用 ObjectDataSource, 如果只要少许coding 也不是大问题。 |
|
|
|
|
|
|
|
发表于 19-10-2007 02:11 PM
|
显示全部楼层
如果要DISPLAY的东西是一样的话,一个OBJECT DATA SOURCE是可以同时BIND到多个CONTROL的,可是问题是PARAMETER, 也就是说如果你SPECIFY某一个PARAMETER在你的DATA SOURCE里, 所有的BOUND CONTROL都会被影响.
通常GRIDVIEW是DISPLAY ALL, 而DETAILSVIEW是DISPLAY一个的,所以PARAMETER不会相同,在这种情况下,我建议的是用两个不同的OBJECT DATA SOURCE, 然后POINT TO THE SAME BUSINESS OBJECT, 然后你的BUSINESS OBJECT有自己的SQL CACHE. |
|
|
|
|
|
|
|

楼主 |
发表于 20-10-2007 11:26 PM
|
显示全部楼层
原帖由 阿牙木 于 19-10-2007 02:11 PM 发表 
如果要DISPLAY的东西是一样的话,一个OBJECT DATASOURCE是可以同时BIND到多个CONTROL的,可是问题是PARAMETER,也就是说如果你SPECIFY某一个PARAMETER在你的DATA SOURCE里, 所有的BOUND CONTROL都会被影响.
通常GRIDVIEW是DISPLAY ALL,而DETAILSVIEW是DISPLAY一个的,所以PARAMETER不会相同,在这种情况下,我建议的是用两个不同的OBJECT DATASOURCE, 然后POINT TO THE SAME BUSINESS OBJECT, 然后你的BUSINESS OBJECT有自己的SQLCACHE.
谢谢你的建议。
我们想做到的是 GridView 在上, 功能为显示全部(或部分)的 record , 而 DetailView 显示active record 。
GridView 只负责显示, paging , sorting ,跟active record selection 功能, 而 DetailView 则有让 user 更新资料的功能。
由于 DetailView 的record 必定是在 GridView 的DataSet里 , 如果两个DataSource 就会有点浪费资源。 我在网上有找到某个方式, 但不是用 GridView + DetailView , 而是用 DataView + Web User Control , 当时应该是用 .Net 1.1, 所以想知道 2.0 有没有内建这种功能。
看来还是要再多研究下。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|