随笔-312  评论-11907  文章-2  trackbacks-224

ASP.NET Futures CTP中的动态数据控件(Dynamic Data Control)简直成了ASP.NET版本的Ruby on Rails——无需配置、无须代码、无需任何干预——只要一个控件,一个完整的数据驱动程序就搞定了。动态数据控件将自动搜寻项目中的数据库,自动选择与页面文件名相同的数据表,自动提供列表显示、详细内容显示、过滤、分页、排序、添加、删除、编辑、修改以及RSS等功能——没错,所有都是自动的——只要一个控件,甚至都不用任何设置!非常有意思的同时也极其有用!

本文就将抛砖引玉地对动态数据控件进行简要的介绍。

 

ASP.NET Futures 下载、安装以及创建新Web站点

ASP.NET Futures 可以在此下载:http://www.asp.net/downloads/futures/。有50M大小

ASP.NET Futures 的参考文档:http://quickstarts.asp.net/Futures/default.aspx

ASP.NET Futures 的官方论坛:http://forums.asp.net/1127/ShowForum.aspx

下载完成之后,安装这个msi,过程非常简单。如果RP不错的话,应该不会出现什么问题。

然后打开VS 2005,新建一个Web 站点,选择ASP.NET Futures Web Site:

即可使用默认的模板创建一个ASP.NET Futures Web站点。打开它的web.config文件,仔细分析学习一下吧,添加了不少东西。

不过在VS的Toolbox中,你会找到更多的好玩意:

看到了这么多花花绿绿的新控件图标,是不是心里有些痒痒呢?不过这篇文章当然不能介绍所有的内容,只是从动态数据控件部分开始。如果有时间,我会在后续文章中一一道来。

 

使用NorthWind作为示例数据库

NorthWind数据库风采不减当年,为了演示动态数据控件的强大功能,这里我们也使用了NorthWind数据库。

顺便介绍一下在VS 2005中自带的SQL Express中使用NorthWind数据库的方法,方便没装数据库的朋友:

首先下载并安装原始的NorthWind数据库:http://www.microsoft.com/downloads/details.aspx?familyid=06616212-0356-46a0-8da2-eebc53a68034&displaylang=en

然后在命令行窗口中导航至"c:\Sql Server 2000 Sample Databases"

输入如下命令即可(要将[Computer Name]替换为你的计算机名):

osql -E -S [Computer Name]\SqlExpress -i instnwnd.sql 

第一次可能会遇到超时失败(RPWT,呵呵),不过再试一次就会好了。

 

实现示例程序页面

我们来将NorthWind数据库中的Employees表中的数据显示出来。

首先在web.config中添加这个SQL Express版本NorthWind数据库的连接字符串(想连接别的数据库的话,也可以根据需要修改,不过这已经不属于本文的讨论范围了),这样动态数据控件才能知道要显示哪个数据库中的数据:

<connectionStrings>
    <add name="NorthwindConnectionString1" 
        connectionString="Data Source=DFLYING-LAPTOP;Initial Catalog=Northwind;Integrated Security=True"
        providerName="System.Data.SqlClient" />
</connectionStrings>

然后新建一个名为Employees.aspx的页面,一定要使用这个名称,这样动态数据控件才能知道要显示数据库中的哪张表(Employees表)!并在Employees.aspx中添加一个DynamicAutoData控件:

<asp:DynamicAutoData ID="DynamicAutoData1" runat="server" />

DynamicAutoData控件是众多动态数据控件中的一种,也是功能最为全面的一种(非常适合作示例程序吸引眼球,嘿嘿)。

然后…………

…………

…………

…………

…………

…………

…………

…………

…………

…………

…………

…………

…………

没了!真的没了!不信的话看看Employees.aspx的完整源代码:

<%@ Page Language="C#" %>
 
<!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>Northwind Employees</title>
    <style type="text/css">
    * { font: 11px tahoma; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DynamicAutoData ID="DynamicAutoData1" runat="server" />
    </div>
    </form>
</body>
</html>

 

一行代码所带来的惊艳效果

这个一行的DynamicAutoData控件能搞出什么名堂呢?F5运行一下,真是不看不知道啊……(抱歉各位,图有点大,实在是这个控件功能太多了……我不是故意的)

仔细分一下都有什么功能:

GridView列表

RSS:

过滤:

编辑:

(还有下拉列表框可用):

排序:

查看条目之间的关系(员工的老板以及员工的下属):

员工的详细信息(帅哥一个):

添加新员工:

这样的功能,只是一句代码实现的……RoR的感觉油然而生阿!

 

源代码下载

本实例程序的源代码在这里下载:http://files.cnblogs.com/dflying/DynamicAutoData.zip

posted on 2007-05-15 02:09 Dflying Chen 阅读(8152) 评论(88)  编辑 收藏 所属分类: ASP.NET 综合

评论:
#1楼  2007-05-15 02:29 | qinglu008 [未注册用户]
如果要在原来的项目上用上这个控件的话..
应该要改那些配置呢??
谢谢.
  回复  引用    
#2楼  2007-05-15 03:16 | 狂人      
最终生成的html代码是怎样的,兼容性如何?可定制性如何?

我懒得装了,我的VS已经太臃肿了,快影响到我正常的工作了,但是我却蛮感兴趣Toolbox里ASP.NET Futures那栏的控件都是干吗的,不如您老大行个好,帮我们挨个做个测试吧~嘿嘿
  回复  引用  查看    
#3楼  2007-05-15 03:26 | deerchao      
如果这东西能方便地自定义页面部分元素的显示/动作方式,并且能方便地处理权限问题的话,个人感觉,其意义可以与Web Forms诞生相比。
  回复  引用  查看    
#4楼  2007-05-15 03:31 | 宝露o(∩_∩)o      
does it free ?
  回复  引用  查看    
#5楼  2007-05-15 07:19 | Cat Chen      
我也觉得这东西不错,用于scaffold不错,不过底层基于GridView等传统控件,所以我对其灵活性没什么信心。
  回复  引用  查看    
#6楼  2007-05-15 08:22 | neuhawk      
感觉没有什么用吧,权限怎么控制?
字段怎么变中文.
  回复  引用  查看    
#7楼  2007-05-15 08:50 | 冬冬      
感觉就是个大型的发射性整合,换汤不换药呀~~~
  回复  引用  查看    
#8楼  2007-05-15 08:53 | Clingingboy      
新出的东西使用确实方便,以后可能再也看不到大家写SqlConnection这些对象了.
  回复  引用  查看    
#9楼  2007-05-15 08:54 | Clingingboy      
@冬冬
那就就看这个新产品DIY的好不好:)
  回复  引用  查看    
#10楼  2007-05-15 08:54 | henry      
整合得太紧密了...
配置个数据连接拖个控件想到和想不到的东西都出来了....
  回复  引用  查看    
#11楼  2007-05-15 09:08 | 非我      
非常适合作示例程序吸引眼球
  回复  引用  查看    
#12楼 [楼主] 2007-05-15 09:15 | Dflying Chen      
@qinglu008
参考一下模板自带的web.config文件吧
  回复  引用  查看    
#13楼  2007-05-15 09:15 | FT [未注册用户]
不喜欢。
  回复  引用    
#14楼  2007-05-15 09:15 | Jeffrey Zhao      
现在的东西说实在的作用不大,我觉得,而且其实这样的控件只是封装了很多东西,相信很多朋友自己也写的出来。

当然我也认为现在微软这边只是表个姿态而已,呵呵,会发展的很好的。
  回复  引用  查看    
#15楼 [楼主] 2007-05-15 09:16 | Dflying Chen      
@狂人
有时间我会介绍一些的
  回复  引用  查看    
#16楼 [楼主] 2007-05-15 09:17 | Dflying Chen      
@deerchao
呵呵,集成得多了,自然可扩展性就会受到影响,二者不可兼得。也不过是对RoR的克隆而已
  回复  引用  查看    
#17楼 [楼主] 2007-05-15 09:17 | Dflying Chen      
@宝露o(∩_∩)o
是免费的
  回复  引用  查看    
#18楼 [楼主] 2007-05-15 09:17 | Dflying Chen      
@Cat Chen
scaffold是什么?GridView的灵活性不够么?
  回复  引用  查看    
#19楼 [楼主] 2007-05-15 09:18 | Dflying Chen      
@neuhawk
呵呵,我也不是很了解,不过似乎可以定制的,写点代码就行了
  回复  引用  查看    
#20楼 [楼主] 2007-05-15 09:18 | Dflying Chen      
@冬冬
这是一种趋势,一种姿态
  回复  引用  查看    
#21楼 [楼主] 2007-05-15 09:19 | Dflying Chen      
@Clingingboy
呵呵,SqlConnection还是需要的,毕竟RoR不适合每个项目,这个东西也不能
  回复  引用  查看    
#22楼 [楼主] 2007-05-15 09:19 | Dflying Chen      
@henry
可以控制想要什么控件,不要什么控件的,稍后我将介绍一下
  回复  引用  查看    
#23楼 [楼主] 2007-05-15 09:19 | Dflying Chen      
@非我
没错,呵呵
  回复  引用  查看    
#24楼 [楼主] 2007-05-15 09:20 | Dflying Chen      
@Jeffrey Zhao
“姿态”这个词说得非常不错,确实就是如此
  回复  引用  查看    
#25楼  2007-05-15 09:24 | 南疯      
@Dflying Chen
半夜三更不睡觉,不要命啊!就是中了彩票也不用如此兴奋啊。^_^
  回复  引用  查看    
#26楼 [楼主] 2007-05-15 09:25 | Dflying Chen      
@南疯
还行啊,不是很晚,嘿嘿
  回复  引用  查看    
#27楼  2007-05-15 09:31 | web报表 [未注册用户]
学习!! 看看能不能在我的eform中实现类似的功能.
  回复  引用    
#28楼  2007-05-15 09:33 | 南疯      
@Dflying Chen
a crazy man!
  回复  引用  查看    
#29楼 [楼主] 2007-05-15 09:58 | Dflying Chen      
@web报表
功能不难……
  回复  引用  查看    
#30楼 [楼主] 2007-05-15 09:58 | Dflying Chen      
@南疯
:)
  回复  引用  查看    
#31楼  2007-05-15 10:02 | kangnoz [未注册用户]
vs中文的能装上这个feture吗?
顺便给个vs2005 team版EN的下载地址
  回复  引用    
#32楼 [楼主] 2007-05-15 10:07 | Dflying Chen      
@kangnoz
不知道,没试过中文的VS
  回复  引用  查看    
#33楼  2007-05-15 10:51 | 生米煮成稀饭      
快了,我们快下岗了。。。
  回复  引用  查看    
#34楼  2007-05-15 11:01 | freetofly      
为什么我的照这样做的话
运行提示
The control must be used in an DynamicDataPage
  回复  引用  查看    
#35楼  2007-05-15 11:06 | Silverlight中文社区 [未注册用户]
MS的东东演示起来都是非常的震撼啊
  回复  引用    
#36楼 [楼主] 2007-05-15 11:20 | Dflying Chen      
@生米煮成稀饭
呵呵
  回复  引用  查看    
#37楼 [楼主] 2007-05-15 11:21 | Dflying Chen      
@freetofly
没遇到这个问题啊,你用的我的Demo么?
  回复  引用  查看    
#38楼  2007-05-15 11:32 | freetofly      
@Dflying Chen
吼吼,发现原因了
我建的是web app 而不是WEB SITE
而且在WEB APP里边控件托出来还会自动注册一下<%@ Register Assembly="Microsoft.Web.DynamicDataControls" Namespace="Microsoft.Web.DynamicDataControls"
TagPrefix="cc1" %>

但就是运行不起来,原因不知道为什么
  回复  引用  查看    
#39楼  2007-05-15 14:05 | 李永京      
ASP.NET Futures CTP成熟了啊?是正式版本了啊?今后趋势如何啊?可以介绍一下啊?
  回复  引用  查看    
#40楼  2007-05-15 14:10 | 代码乱了      
可能会比较适合一些中小型的应用,至于大一点的项目不知道有没有问题
  回复  引用  查看    
#41楼  2007-05-15 14:46 | Liusa      
这玩意貌似和dw的动态页面差不多嘛,人家好多年前就出来了
  回复  引用  查看    
#42楼  2007-05-15 15:21 | Clingingboy      
@Liusa
不同,以前用的不放心,因为代码还是在页面呈现出来,现在用的舒心,就一行.全给封装了 本质不变:)
  回复  引用  查看    
#43楼  2007-05-15 15:44 | yiyioo [未注册用户]
微软很多集成的东西都是给人感觉似乎很好用。......

不过,我还是要用来试试.
  回复  引用    
#44楼  2007-05-15 15:46 | yiyioo [未注册用户]
@Clingingboy
封装程度越高越怕怕

我倒宁愿代码全部显示出来.
我想怎么改就怎么改.

全封装了,要改起来就得下点工夫....
  回复  引用    
#45楼  2007-05-15 16:13 | Justin      
用来做快速演示程序也不错
  回复  引用  查看    
#46楼 [楼主] 2007-05-15 17:14 | Dflying Chen      
@freetofly
居然不能在Web application里面用,呵呵
  回复  引用  查看    
#47楼 [楼主] 2007-05-15 17:14 | Dflying Chen      
@李永京
没有,现在还是CTP而已,尝尝鲜吧,呵呵
  回复  引用  查看    
#48楼 [楼主] 2007-05-15 17:15 | Dflying Chen      
@代码乱了
大型项目估计目前很难使用
  回复  引用  查看    
#49楼 [楼主] 2007-05-15 17:15 | Dflying Chen      
@Liusa
“dw的动态页面”是什么东西…………
  回复  引用  查看    
#50楼 [楼主] 2007-05-15 17:15 | Dflying Chen      
@Clingingboy
我觉得也是,如果想定制的话,一定会有方法的
  回复  引用  查看    
#51楼 [楼主] 2007-05-15 17:16 | Dflying Chen      
@yiyioo
充分照顾程序员的“用户体验”

  回复  引用  查看    
#52楼 [楼主] 2007-05-15 17:16 | Dflying Chen      
@yiyioo
鱼和熊掌不可兼得阿,毕竟要有所权衡取舍
  回复  引用  查看    
#53楼 [楼主] 2007-05-15 17:17 | Dflying Chen      
@Justin
一些小型的网站的后台管理系统,我觉得就非常适合用这个东西做
  回复  引用  查看    
#54楼  2007-05-15 17:30 | ROCK [未注册用户]
我的机器上装了VS2005 Team了。还能再装OrcasBeta 1吗?Ajax May CTP是否支持Orcas?Orcas什么时候正式发布?
  回复  引用    
#55楼  2007-05-15 17:47 | Q/chen      
太强了!!
  回复  引用  查看    
#56楼 [楼主] 2007-05-15 18:36 | Dflying Chen      
@ROCK
最好用虚拟机,而不是直接安装Orcas
应该也会支持吧
Orcas应该在今年发布
  回复  引用  查看    
#57楼 [楼主] 2007-05-15 18:36 | Dflying Chen      
@Q/chen
:)
  回复  引用  查看    
#58楼  2007-05-16 02:50 | Wuvist [未注册用户]
同意 Jeffrey Zhao 说的:
“现在的东西说实在的作用不大,我觉得,而且其实这样的控件只是封装了很多东西,相信很多朋友自己也写的出来。”

要论“适合作示例程序吸引眼球”的话,怎么跟Django的auto admin比?就不说功能了……光界面,Django赏心悦目,而这玩意简直惨不忍睹……而且,这个东西还需要写一行代码。人家django的admin website可纯粹是auto的……连一行代码都不用……

最不同意的是,把这个说成是asp.net的RoR……RoR强调的是MVC framework……这玩意MVC在哪里?就是个高度封装的控件……仅此而已……
  回复  引用    
#59楼  2007-05-16 09:22 | zxbyh [未注册用户]
哈哈,回归RDA了,有Delphi和PB的感觉了!!
  回复  引用    
#60楼  2007-05-16 09:26 | zxbyh [未注册用户]
大型项目怎么又不可以用了??
再大的项目还不是有对一些单个表的增删改,用这个有什么不可。

又没有叫你用这个东西去处理业务逻辑。
一个东西好不好,要看你怎么用!!!
  回复  引用    
#61楼  2007-05-16 10:02 | Liusa      
@Dflying Chen
dw的动态页面就是dreamweaver的动态页面啊,可以自动生成增删改的代码,01年就出来了.当然功能没这么强大.我刚用asp那会全用这个东西,开发速度极快,哈哈哈

  回复  引用  查看    
#62楼  2007-05-16 12:44 | 刚刚      
给我的感觉好像没有太多的用处,在软件开发时用途不是很大,如果只是对开发演示程序来说,那么还是不错的,方便快捷。
这样一来,数据库的表名必须是英文的,而字段名又必须是中文的!这样要求似乎应用程序和数据库的联系约束太厉害了。
再说一下页面的名称,如果需要多个页面操纵一张表,并且需要选择显示表中的字段估计就有很多问题,页面名称,和数据绑定显示的列等等,开发的快捷必然会出现灵活性的制约呀!
  回复  引用  查看    
#63楼  2007-05-16 16:57 | 游客 [未注册用户]
UP 我要代码
  回复  引用    
#64楼  2007-05-16 17:04 | 游客 [未注册用户]
有没有网站是用这个做的???
  回复  引用    
#65楼  2007-05-17 09:50 | e-bread [未注册用户]
商业商业,不要指望所有老板都希望你一行行的写代码,你给他做出来是真的,这种东西给新人用还是不错的,减少了人员更替带来的麻烦。想要灵活性的话干脆写最底层的。
  回复  引用    
#66楼 [楼主] 2007-05-17 13:14 | Dflying Chen      
@Wuvist
呵呵,仁者见仁
  回复  引用  查看    
#67楼 [楼主] 2007-05-17 13:15 | Dflying Chen      
@zxbyh
呵呵,大型项目一般不会用而已。心平气和讨论:)
  回复  引用  查看    
#68楼 [楼主] 2007-05-17 13:15 | Dflying Chen      
@Liusa
原来是这个,呵呵,我以前也用过呢,还当个宝了!
  回复  引用  查看    
#69楼 [楼主] 2007-05-17 13:15 | Dflying Chen      
@Liusa
原来是这个,呵呵,我以前也用过呢,还当个宝了!
  回复  引用  查看    
#70楼 [楼主] 2007-05-17 13:16 | Dflying Chen      
@刚刚
这些似乎都可以配置的……
  回复  引用  查看    
#71楼 [楼主] 2007-05-17 13:16 | Dflying Chen      
@游客
代码已经提供了下载
  回复  引用  查看    
#72楼 [楼主] 2007-05-17 13:18 | Dflying Chen      
@游客
目前应该不会有,毕竟刚刚出来没几天
  回复  引用  查看    
#73楼  2007-05-17 13:31 | 刚刚      
@Dflying Chen
是吗?但是还没有发现在哪里配置,正准备好好研究一下呢,可是程序突然抱错了,郁闷呀……
  回复  引用  查看    
#74楼  2007-05-17 22:34 | kop [未注册用户]
对ms,我真的快没想法了。。。
  回复  引用    
#75楼 [楼主] 2007-05-19 22:35 | Dflying Chen      
@刚刚
什么错误啊?
  回复  引用  查看    
#76楼 [楼主] 2007-05-19 22:35 | Dflying Chen      
@kop
呵呵,新技术层出不穷,不光光是微软,其他也都是这样
  回复  引用  查看    
#77楼  2007-05-20 10:47 | Sammy      
我也做了个示例程序,很不错,只用在web.config中配置一个连SQL Server数据库的字符串,拖一个控件,写一个gridview皮肤。看起来还是蛮帅的!
但是连Access数据库却怎么弄也不行。不知道有没有人连过Access数据库?

连Access: 报错-- System.ArgumentException: 不支持关键字: “provider”。《add name="connStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Sammy.mdb" providerName="System.Data.OleDb"/》
  回复  引用  查看    
#78楼 [楼主] 2007-05-20 23:08 | Dflying Chen      
@Sammy
这是数据库连接字符串的格式错误问题吧?
  回复  引用  查看    
#79楼  2007-05-20 23:44 | Sammy      
@Dflying Chen
恩,我也觉得是,但是试了好几种方式,对Access都不能成功!
应该不会是连不了access数据库吧?

另外,如果app_data文件夹中放数据库文件的话,只能是.mdf文件吗?
而且如果要用这个.mdf的数据库文件,好像还必须安装sql server 2005 express。
今天测试时发现的!
  回复  引用  查看    
#80楼  2007-06-17 19:26 | love007 [未注册用户]
想在:Web application里面用,如何才能使用?
现在老提示:The control must be used in an DynamicDataPage
  回复  引用    
#81楼 [楼主] 2007-06-19 16:28 | Dflying Chen      
@Sammy
我不知道Access的文件可以么,不过sql server 2005 express也不大,不用太多心思就好了:)
  回复  引用  查看    
#82楼 [楼主] 2007-06-19 16:29 | Dflying Chen      
@love007
似乎只能在Web Site中使用,WebApp不行
  回复  引用  查看    
#83楼  2007-10-20 01:15 | Attr [未注册用户]
太不成熟,约束太多,不知道URL重写是否好一点,能支持吗
  回复