如何使用业务对象和存储过程填充窗体视图?(数据源对象/数据绑定控件)
本文关键字:对象 数据源 数据绑定 控件 窗体 业务 何使用 存储过程 填充 视图 | 更新日期: 2023-09-27 17:56:06
我成功地使用业务对象、存储过程和结构在页面中填充了文本框控件列表,以显示并允许编辑某些客户详细信息数据。我分别将每个文本框控件分配给结构中的一个值。
然后,我成功地使用 SqlDataSource 填充窗体视图以显示相同的客户详细信息数据。
我现在想使用总线对象、存储过程和结构(或其他对象)在窗体视图中显示客户详细信息数据。
下面介绍了如何调用业务对象来获取数据并将其返回到"客户详细信息"页面的"Load 事件"中的结构中:
CustomerDetailsStruct cd = CustomerDetailsAccess.GetCustomerDetails(customerId);
如何告诉窗体视图使用该结构?或者,我是否需要将数据检索到其他对象中?
下面是最初使用 SqlDataSource 时显示客户详细信息数据的页面中的代码:
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" CellPadding="4" DataKeyNames="CustomerID" ForeColor="#333333">
我看到有一个可用的数据源属性。此 MSDN 页上的示例使用数据集。http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.aspx我还在MSDN上阅读了有关ObjectDataSource的信息。
如果我需要提供更多详细信息或更多代码,请告诉我。
我还想问一个更广泛的问题:有人可以推荐一本好的书或网站来解释数据源对象和 DataBound 控件以及如何将它们配对吗?我目前正在读一本书,里面有一些关于如何做一些事情的好例子。但是,有没有一个好的数据绑定参考指南?
这是我的更多表单视图。
国王戴夫:我没有 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>
需要更多/其他东西?
试试这个:
CustomerDetailsStruct cd = CustomerDetailsAccess.GetCustomerDetails(customerId);
//FormView DataSource has to be IListSource, IEnumerable, or IDataSource
List<CustomerDetailsStruct> list = new List<CustomerDetailsStruct>();
list.Add(cd);
FormView.DataSource = list;
//Choose the proper mode (templates have to be defined)
FormView.ChangeMode(FormViewMode.ReadOnly);
FormView.DataBind();