【发布时间】:2012-08-24 03:59:34
【问题描述】:
使用 EntityFramework,我创建了一个包含许多 DetailsView 和 FormView 控件的页面,以尝试捕获要保存到 sql server 的调查信息(100% 插入;不更新或删除)。涉及的表/实体包括调查、问题、响应者、响应、答案和几个类型查找。 (调查有一个问题列表,由受访者完成。受访者的回答有一个答案列表。一个答案回答一个问题。)希望一切都有意义。
我不想让用户在每个 DetailsView 或 FormView 中单击自动生成的插入按钮,我想提供一个提交按钮来插入所有新数据,这就是我目前 - 并且未成功 - 尝试编码的内容。本质上,我正在寻找一种方法来调用由每个 *Form 自动创建的插入按钮调用的命令。
我想办法做到这一点是循环通过 DetailsView 和 FormView 控件,在我进入 ObjectContext 时保存(附加?)实体,然后调用 SaveChanges() 将它们全部插入到数据库中一次。但是,我在访问新实体时遇到问题。我似乎无法通过 FormView/DetailsView 本身访问它们,而且我似乎无法访问 *Views 中的 BoundFields。
我试图将 FormViews 嵌套在 FormViews 中,因为 this 推断这是可能的,但我收到错误 Type 'System.Web.UI.WebControls.FormView' does not have a public property named 'FormView'.
我即将开始研究涉及与DetailsViews 绑定的ObjectContext 和/或EntityDataSources 的解决方案,但在我看来,如果我是从那方面来的,那么我还不如使用普通的 TextBoxes 并在它们之间循环,在代码中创建所有实体内容,而不是让数据绑定功能发挥作用。
有人可以指出我如何运行每个 *Form 的插入按钮命令以将所有新创建的实体保存在每个 DetailsView/FormView 中,或者让我知道我是否应该开始查看另一个区域(例如 ObjectContext 或 EntityDataSource)?
非常感谢
麦克莱克斯
【问题讨论】:
-
不要对复杂的表单使用数据源和视图控件。他们没有为此做好准备。在这种情况下可以弯曲它们以工作,但它很复杂且容易出错。只需使用带有一些 javascript 的普通表单来添加新行并保留有关已删除行的信息,您将更快地完成它并且您将完全控制结果。
标签: asp.net entity-framework data-binding detailsview formview