这应该是一个基本问题,我认为缺乏精确的搜索词是我找不到答案的原因。
我正在处理的数据库包含一个只有大约 6 行和 5 个字段的小表。它确实需要 CRUD 功能,因为它会偶尔更改,但几乎可以肯定永远不会扩展到超过十几行。
ASP.NET Web 应用程序具有业务逻辑和数据访问层。
我想要一个 dropDownList 作为伪“分页”控件,以选择要在 detailsView 中显示的行。
快速而讨厌的解决方案是在 ASP 中放置 2 个 objectDataSource 控件,一个带有选择参数:
<asp:ObjectDataSource ID="DDDataSource" runat="server" TypeName="PICUdrugs.BLL.referenceBL"
SelectMethod="getReferences"/>
<asp:DropDownList ID="RefAbrevDDL" runat="server" AutoPostBack="True"
DataTextField="abbrev" DataSourceID="DDDataSource"
DataValueField="drugReferenceID" ViewStateMode="Enabled" >
</asp:DropDownList>
<asp:ObjectDataSource ID="SelRefObjDataSrc" runat="server" SelectMethod="getReferences"
UpdateMethod="updateReference" DeleteMethod="deleteReference" TypeName="PICUdrugs.BLL.referenceBL"
OnUpdated="reference_CRUD" DataObjectTypeName="PICUdrugs.DAL.drugReference"
ConflictDetection="CompareAllValues" OldValuesParameterFormatString="orig{0}">
<SelectParameters>
<asp:controlparameter name="refID" controlid="RefAbrevDDL" propertyname="SelectedValue"/>
</SelectParameters>
</asp:ObjectDataSource>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="SelRefObjDataSrc"
CssClass="DetailView">
<Fields>
<asp:DynamicField DataField="referenceDescription" HeaderText="Reference Description" />
.....[remaining fields].....
虽然这可行,但让我感到困扰的是,我两次查询数据库以获取此类类似信息。是否有任何有效/简洁的解决方案来利用 objectDataSource(即不必为 detailsView 编写特定的事件处理程序),但在单个数据库查询上构建一个可枚举列表,并让两个控件访问同一个对象(?使用详情查看分页控件?)?后面的代码是 c#,但如果有人有任何示例/链接,vb 很好。
谢谢你的想法(即使这些想法是停止懒惰,放弃两个 objectDataSources 并手动编写 detailsview 事件处理程序) - 总是很感激。