新足迹

 找回密码
 注册

精华好帖回顾

· 庆祝一周年的蛋糕--New York cheesecake (2008-1-30) cctang · 墨尔本理发记 (2005-8-3) Eucalypt
· 【冬日里的暖食暖文】清炖狮子头:爱是回忆是传承 (2015-7-22) 明河素月 · 全文完:内陆自驾游记 - 从天文之都Coonabarabran到Opal宝石镇Lightning Ridge(内附温泉小镇Moree攻略) (2018-10-11) 天朝屁民
Advertisement
Advertisement
查看: 1472|回复: 25

[IT] 请教C# 高手之四: 有关design time时的dataset instance [复制链接]

发表于 2010-7-2 16:31 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
C#里的Dataset和Delphi中的Dataset完全是俩吗事,所以对Delphi developer来说很难理解和应用C#里的Dataset.

在Delphi中,你在design time 时产生一个datatable, 它本身就是一个instance, 它可以被任何form来share, 你只要写一个event handler, 也同样被所有的form or runtime code 来share.

在C# design time 时, 在Dataset里所有建立好的DataTable全是一个class, 或一个class template, 如果form上的DataGridView要和其中的一个DataTable link起来,是在form上产生一个dataset的instance, 然后通过bindingsource 连接起来,如果有2个form同时用一个DataTable, 你就必须产生另一个instance. 如果10个form, 就必须有10个instance, 这在管理上有很大问题,我不知道高手们如何解决的.
持不同股见者...
Advertisement
Advertisement

2007 年度奖章获得者

发表于 2010-7-2 16:45 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
In C#, one DataSet/DataTable instance can be bound to one or multiple data grid instance. I dont quite understand your question..

发表于 2010-7-2 16:48 |显示全部楼层

回复 2# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
How? during design time?

2007 年度奖章获得者

发表于 2010-7-2 16:59 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
当然是runtime啦,new 一个 dataset,两个DataGridView,然后把这个dataset设为这两个DataGridView的datasource就可以了。

发表于 2010-7-2 17:04 |显示全部楼层

回复 4# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我的题目就是design time而不是run time.

发表于 2010-7-2 17:39 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这是Delphi里design time的简单的demo.

datamodule中有一个table, 一个datasource linked to this table. 这个table 有许多events, 你可以在这些events里写code, 任何form 或unit 用到这个table都会trigger events. 这样你所有的validation都可以放在这个event里, 但C#里的DataTable本身并不是一个instance, 而是在你用得时候去new 一个, 在Delphi里application已经在design time帮你产生了instance, 这个instance name就是table1, 它是从TTable继承下来的. 然后任何form都可以用这个instance 无任在design time 还是在run time.




这是design time form中用这个table1. form里没有任何table instance, table instance是在datamodule里.



这是另外一个design time form指向同一个table1.



我google了一下, C#在design time时好像没有办法几个form用一个instance.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
持不同股见者...
Advertisement
Advertisement

发表于 2010-7-2 18:09 |显示全部楼层
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
LZ为什么非要强求design time呢?我们是programmer, 不是UI artist..多写几句代码总比用鼠标摆来摆去的要好,特别是这种那个data table连到那个data grid上面

看了LZ好几个帖子,dephi跟C#是两回事,要学就学C#是怎么干的,别老死盯着dephi. Dephi那么好LZ干吗要学C#? 又不是搞比较文学的。。

发表于 2010-7-2 19:14 |显示全部楼层

回复 7# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
别激动,别激动. 学Delphi也好,C#也好,都是为了混口饭,所以也无所谓哪个好,只要有饭吃就是好。老板说要把所有的项目从Delphi转到C#, 那我也只能 following.

关于我发的几个帖子,基本上是因为在Delphi里很简单搞定的,在C#里找不到,要么是我没有找到好的object或方法,要么就是C#里确实没有Delphi里类似的东东.  所以希望通过高手们的帮助,少走一些歪路。
持不同股见者...

2010年度奖章获得者

发表于 2010-7-2 19:28 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
only noobs using design time.

even if in design time, you can bind one datasource to as many grids as you like.

once you drag a grid control to the design surface, visual studio auto generate a class for that control in the .designer file. and that's the instance you going to be using.

don't know what heck you talking about 10 grids, 10 datasource....

发表于 2010-7-2 19:30 |显示全部楼层

回复 7# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
言归正传,“有关design time时的dataset instance”这个题目只是一个表象,真正想了解的是如何管理data in centralized at the application level.

假如说customer table, 除了database端本身有validation or calculation, application这一端也会有validation and calculation, 我希望能只写一个validation, 所有的instance都share 这个validation. Delphi中这些event已经帮你准备好了,我想C#里也应该有类似的方法。。
持不同股见者...

2010年度奖章获得者

发表于 2010-7-2 19:39 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2010-7-2 18:30 发表
言归正传,“有关design time时的dataset instance”这个题目只是一个表象,真正想了解的是如何管理data in centralized at the application level.

假如说customer table, 除了database端本身有validation or c ...


now you talking about another topic - validation.

我的方法绝对不适合初学者, 您老自己看看 基础知识吧 http://msdn.microsoft.com/en-us/library/ms186197%28VS.80%29.aspx

评分

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

查看全部评分

Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-7-2 20:23 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2010-7-2 16:39 发表
我google了一下, C#在design time时好像没有办法几个form用一个instance.


It seems the Google and Hotmail you using are different from the one we using.... haha!

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


It seems the Google and Hotmail you using are different from the one we using.... haha!


Show me multiple forms share one instance during design time...

And show me you can add sub-folder in web based hotmail..

haha haha......
持不同股见者...

2010年度奖章获得者

发表于 2010-7-2 20:48 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Show me multiple forms share one instance during design time...

In design view.

1. drag one datasource control and two grid controls
2. Select one grid and press F4
3. from the datasource dropdown list, select the Datasource control ID
4. Do the same to the second or the next 100 grids


And show me you can add sub-folder in web based hotmail..

To add a new folder in Windows Live Hotmail:

•Click Manage folders beneath the folders list.
•Click New.
•Enter the desired name under Folder name:.
•Click Save.

2010年度奖章获得者

发表于 2010-7-2 20:51 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无语啊。。 搞IT的不会在Hotmail里创建Folder。。。。

发表于 2010-7-2 21:01 |显示全部楼层

回复 15# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你无语,我也无语了。。

但是这个manager folders 对我来说没用,还是无法解决e-mail filter的问题。
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-7-2 21:17 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2010-7-2 20:01 发表
你无语,我也无语了。。

但是这个manager folders 对我来说没用,还是无法解决e-mail filter的问题。


You gotta have to admit Hotmail be able to create folders first

then I'll show to how to setup a filter

评分

参与人数 1积分 +3 收起 理由
hornsay + 3 你太有才了

查看全部评分

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


You gotta have to admit Hotmail be able to create folders first

then I'll show to how to setup a filter



所以我才无语了呀。
持不同股见者...

2010年度奖章获得者

发表于 2010-7-2 21:28 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
hi brother,

I'm uploading lots .Net ebook. some are c# step-by-steps, I'm sure you'll love them.

http://www.oursteps.com.au/bbs/v ... p;extra=#pid4087936

发表于 2010-7-2 21:33 |显示全部楼层

回复 19# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Thanks brother.

分分已加。

发表于 2010-7-2 21:53 |显示全部楼层
此文章由 pengruijun 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pengruijun 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果楼主是学做asp.net web 开发的。还是尽量少用或者不用design template.
Advertisement
Advertisement

发表于 2010-7-2 22:25 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 pengruijun 于 2010-7-2 20:53 发表
如果楼主是学做asp.net web 开发的。还是尽量少用或者不用design template.


asp.net 已经完成。

现在我们要把现有的俩个Delphi项目移植到C#,一个只有main form, 基本上扮演service 的角色, 另一个是传统的application, 大量的UI. 这俩个都是database application.

刚才受dalaohu的启发,突然感悟其实所有的validation 都可以在dataset里做(还没有实际用过),然后任何instance都会得到相同的validation.

Dataset对我们比较confuse, 在C#里是可以contain一组data access components, 在Delphi里Dataset却是一个简单的data access component, 如query or table. 所以光这个naming, 或概念就把我够折腾的了。
持不同股见者...

发表于 2010-7-2 22:53 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
dataset很重,在2.0之前被广泛应用,之后除了legacy system之外,很多team都弃用了,转向轻量级的business entity,这些entity可以自己做,也可以通过ormaping tools生成。

我感觉lz谈的东西都是winform的东西,web form很少有人用一个dataset邦定多个grid,虽然这样很容易通过view来实现,但在web很少这样用,render出来dataset就等着被gc回收了。只有winform才在local拼命用dataset,业务做好之后再跟database sync一下。

坛子里面大多数人是做web的,不同的思路,不一定理解你的意思,不过即使是winform,dataset也很少用了。

发表于 2010-7-2 23:29 |显示全部楼层

回复 23# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
感谢分享。

我现在刚开始学C#中database access这一部分, asp.net这一部分我们只是用了sqlCommand, dataReader这些object, 但现在要做desktop app, 我想所有的dataset, dataadapter, datareader之类的是必须要学会应用,然后才能去看有没有更好的东东。但这一部分对我来说还蛮难理解,尤其是C#是pure OO language, Delphi是hibrid OO, 所以Delphi中系统会自动帮你生成一个global variable, 这也是为什么所有这些混在一起就觉得很难理解,但对一直做C#的TX来说就很难理解我的提问。

现在只是drop了dataset, datatable 和tableadapter, 然后drop 一个datagridview连接起来,看看C#是怎样把data access object 和 data aware control连接起来的。然后就发现dataset instance 这一块很难理解,但现在我觉得有所感悟。

另外就是TableAdapter几乎没什么用处, 除了design时有用, 这个tableadapter以后我想会用sqlDataAdapter来代替。
持不同股见者...

发表于 2010-7-3 21:55 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
forget about dataset/dataadapter/sqldataadapter,实际工作中没有人用,你也不用为这个费过多的精力。

不过我个人觉得可能对初学者来说,delegate是个难点,dataset应该没什么可以很费解的阿。

评分

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

查看全部评分

发表于 2010-7-3 22:34 |显示全部楼层

回复 25# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
delegate is one of the design patterns, 这个已经在Delphi中用了很多,我想概念方面应该没什么问题。

我估计C#里control的data binding 功能很强,不一定要binding到datatable上,Delphi的话很难做到这一点, data control 只能和data access component link起来。

感谢分享。你的回帖给了我很大的启发。有机会我会把前几天做的asp.net 的方法post上来,看看有没有值得改进的。我现在最怕的就是没人带,到时做出来的东西是野路子。
持不同股见者...
Advertisement
Advertisement

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部