首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET 2.0添加到DB的正确控件

ASP.NET 2.0添加到DB的正确控件
EN

Stack Overflow用户
提问于 2010-11-09 11:19:16
回答 2查看 114关注 0票数 0

我在寻求一些建议。我在甲骨文EnterpriseOne平台上开发了大约11年,现在正在向c#迈进。因此,我对编程并不陌生,但在创建c# ASP.NET网页时,有几个概念在我的脑海中难以理解。

我有以下情况:

所以我有一个订单头+一个订单明细表,我想要创建一个新的订单,每个订单头可能有多个订单行。

在EnterpriseOne,我将有一个登陆屏幕,可以搜索,选择和添加新的订单。当您单击add按钮时,我将加载一个标题屏幕(没有网格),您将输入所有订单标题信息,这些信息对于所有订单细节记录都是通用的。当单击OK (到标题屏幕)时,我将显示一个详细的屏幕(网格),您可以在其中添加多个订单详细记录。

那么,如何在c# ASP.NET 2.0中做到这一点呢?我想创建一个N层应用程序.

  1. 我已经创建了新的类(OrdersHeader +OrdersHeader),它们与我的订单头和订单明细表相匹配。
  2. 我创建了一个新类(OrdersDB),它与OrdersDB/detail类和数据库(使用ADO.NET和存储过程)交互。
  3. 在登陆屏幕上,我创建了一个ObjectDataSource,指向OrdersDB和SelectMothod.因此,这将返回一个orderdetails集合,并允许用户对现有的OrderDetails进行搜索和选择。
  4. 我创建一个标题屏幕(当他们单击add),它将包含文本框+标签的列表。当单击OK时,我将从屏幕上的值创建一个新OrderHeader类的实例,并传递给OrdersDB的insert方法。这是对的吗?
  5. 在细节屏幕上,我应该使用哪个控件让用户添加订单详细信息?我假设我可以使用设置为允许插入的GridView,但是当查询一个空的DB时,这将返回一个空白的网格(现在允许我添加新的行)。

我希望这足够清楚。我确信我需要做的事情是显而易见的,但我认为多年来在另一个平台上的工作使我对这个问题感到困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-09 11:37:22

这真的取决于你正在为之服务的UI。

如果您想要一个屏幕,基本上可以直接编辑数据库中的行(编辑值、删除记录、添加记录),那么您可能需要一个GridView

它还取决于您对ASP.NET Web的舒适度/体验。Web表单在“拖放”意义上是很棒的( IMO也是它的衰落)。这意味着您可以在页面上丢弃一个控件,并准备就绪。

但有时候这太过分了。我更喜欢使用网络控件,只有在绝对必要的时候。

我将保留一个简单的表单,基本表单字段,然后在服务器上构造实体,并传递到业务层进行验证和持久性。对过程有充分的控制。

顺便问一下,我看不出你的问题中有什么是N-Tier的解决方案?如果您想要N层,您应该通过某种web服务(即WCF)与您的数据层(在独立的计算机上到web层上)进行通信,而不是直接调用OrdersDB

票数 1
EN

Stack Overflow用户

发布于 2010-11-09 12:19:26

我认为你有正确的想法。问题是如何使用网格视图进行插入,不幸的是,它没有附带插入项模板。最简单的方法就是将插入控件放在面板中,并在控件单击add item按钮时显示。

您可以使用网格视图进行插入,方法是将插入控件添加到页脚项模板中,但您必须自己处理页脚行的隐藏和显示。此外,如果绑定到空数据集,那么页脚行将不会出现,因此必须使用虚拟记录填充网格视图,以便在没有项时使页脚显示出来,因此有几个箍可以跳转,但是如果您在google上搜索,应该会找到一些示例。这里有一个看起来是有效的:http://www.aspdotnetfaq.com/Faq/How-to-insert-row-in-GridView-with-SqlDataSource.aspx

还有其他控件,如细节视图和formview,但老实说,我从未使用过它们,因为当您添加诸如事务和自定义验证之类的复杂性时,所有这些都会带来痛苦,而且我认为手动处理编辑和插入的所有代码更容易,除非情况非常简单。它们具有从数据库模式自动生成字段和标签的能力,因此它们可能很有用。

因此,至少对我来说,我使用网格视图查看,有时编辑,但很少用于插入,我很少使用内置的更新与双向数据绑定。通常,如果在网格视图中编辑,我只需使用编辑按钮来捕获编辑项索引,并使用命令参数或griddatakeys获取键并自己处理更新代码。不是说这是最好的方法,而是我经常这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4133046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档