我成功地使用了一个业务对象、一个存储过程和结构来填充一个带有文本框控件列表的页面,以显示并允许编辑一些客户详细信息数据。我分别将每个文本框控件分配给结构中的一个值。
然后,我成功地使用 SqlDataSource 填充表单视图以显示相同的客户详细信息数据。
我现在想使用总线对象、存储过程和结构(或其他对象)在表单视图中显示客户详细信息数据。
下面是我如何调用业务对象来获取数据并将其返回到 Customer Details 页面的 Load 事件中的结构:
CustomerDetailsStruct cd = CustomerDetailsAccess.GetCustomerDetails(customerId);
如何告诉表单视图使用该结构?或者,我是否需要将数据检索到不同的对象中?
这是我最初使用 SqlDataSource 时显示客户详细信息数据的页面中的代码:
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" CellPadding="4" DataKeyNames="CustomerID" ForeColor="#333333">
我看到有一个 DataSource 属性可用。此 MSDN 页面上的示例使用 DataSet。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.aspx 我还在 MSDN 上阅读了有关 ObjectDataSource 的信息。
如果我需要提供更多详细信息或更多代码,请告诉我。
我还想问一个更广泛的问题:有人可以推荐一本可以解释 DataSource 对象和 DataBound 控件以及如何将它们配对的好书或网站吗?我目前正在阅读一本书,其中有一些关于如何做一些事情的好例子。但是,有没有很好的数据绑定参考指南?
这是我的更多表单视图。
TheKingDave:我没有 DataSource 或 DataSourceID 属性,因为我不知道如何在 Page_Load 事件中使用结构或备用对象作为我的数据源,这是我的主要问题。我在 Page_Load 事件中得到了结构。我想我需要以某种方式使它成为这里的数据源:
// Get the Customer Details data with the business object.
CustomerDetailsStruct cd = CustomerDetailsAccess.GetCustomerDetails(customerId);
这是 EditItemTemplate 的开始。我从使用 SqlDataSource 的表单视图中的代码复制/粘贴了它,因此我不必重新创建表。它只是一个表格,在 EditItemTemplate 中具有文本框控件,在 ItemItemplate 中具有标签。
<asp:FormView ID="FormView1" runat="server" CellPadding="4" ForeColor="#333333">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditItemTemplate>
<table cellpadding="5" class="UserDetailsTable">
<tr>
<td class="UserDetailsTitleCell">Address1:</td>
<td><asp:TextBox ID="Address1TextBox" runat="server" Text='<%# Bind("Address1") %>'>
</asp:TextBox></td>
</tr>
这是项目模板的开始:
<ItemTemplate>
<table cellpadding="5" class="UserDetailsTable">
<tr>
<th colspan="2">Customer Details:</th>
</tr>
<tr>
<td class="UserDetailsTitleCell">Address1:</td>
<td class="UserDetailsTitleCell"><asp:Label ID="Address1Label" runat="server" Text='<%# Bind("Address1") %>'></asp:Label></td>
</tr>
需要更多/其他东西?