我正在为一家销售电话号码的公司制作购物车。要购买一个电话号码,“客户”需要经过各种步骤,以配置他们的电话号码,因为他们走。
到目前为止,我的方法是一个向导样式的过程,在这个过程中,我将客户选择存储在一个名为NumberCart的数据库中的表中。这将存储步骤一和步骤二的所有信息。
第三步比较棘手,因为客户可以有许多与他们选择的号码相关联的选项。为了解决这个问题,我决定将它们的特性选择存储在一个名为FeatureCart的独立表中。
我一直在使用实体框架来检索和插入数据。数据模型可以通过剪切和粘贴这个链接来实现(因为我是新手,Stackoverflow只允许我发布两个链接)。
armourcreative.co.uk/EntityDesignerDiagram.bmp
我的问题是,是否有一种方法可以检索两个表,并在网页中呈现结果,以便在下面的链接上显示图像?
示例购物车呈现我想要实现的目标
我所能得到的只有两个EntityDataSources,它们连接到同一个页面上的NumberFeatureView和NumberPackageView,其呈现方式类似于下面链接中的图像:
示例购物车呈现的不是我想要的
正如您所看到的,显示用户选择的方式并不十分清晰,因为它不将该功能与它所属的电话号码相关联。
我的想法是在CartID和NumberID的基础上以某种方式显示与NumberPackageView相匹配的NumberPackageView。
如果有人能告诉我如何完成上述任务,我将非常感激。我可能离目标很远,这就是我迫切需要帮助和指导的原因。
修订
好的,我已经设法让他用下面的代码正确地呈现:
<h3>Please review your order!</h3>
<asp:ListView ID="NumberPackageView_LV" runat="server"
DataSourceID="NumberPackageView_EDM">
<EmptyDataTemplate>
No data was returned.
</EmptyDataTemplate>
<ItemTemplate>
<li style="">
<asp:HiddenField ID="ID" runat="server" Value='<%# Eval("NumberID") %>' />
<strong><asp:Label ID="NumberLabel" runat="server" Text='<%# Eval("Number") %>' /></strong> →
<asp:Label ID="DestinationLabel" runat="server" Text='<%# Eval("Destination") %>' />
<br />
<asp:Label ID="PkgNameLabel" runat="server" Text='<%# Eval("PkgName") %>' />
<asp:Label ID="PkgMonthlyLabel" runat="server" Text='<%# string.Format("{0:c}",(Eval("PkgMonthly"))) %>' />
<!-- ENTITY DATA SOURCE FOR FEATURES -->
<asp:ListView ID="NumberFeatureView_LV" runat="server"
DataSourceID="NumberFeatureView_EDM">
<EmptyDataTemplate>
No data was returned.
</EmptyDataTemplate>
<ItemTemplate>
<li style="">
<asp:Label ID="FeatureNameLabel" runat="server" Text='<%# Eval("FeatureName") %>' />
<asp:Label ID="FeatureSetUpLabel" runat="server" Text='<%# string.Format("{0:c}", (Eval("FeatureSetUp"))) %>' />
<asp:Label ID="FeatureMonthlyLabel" runat="server" Text='<%# string.Format("{0:c}", (Eval("FeatureMonthly"))) %>' />
</li>
</ItemTemplate>
<LayoutTemplate>
<ul ID="itemPlaceholderContainer" runat="server" style="">
<li runat="server" id="itemPlaceholder" />
</ul>
</LayoutTemplate>
</asp:ListView>
<asp:EntityDataSource ID="NumberFeatureView_EDM" runat="server"
AutoGenerateWhereClause="True" ConnectionString="name=ShoppingCartv2Entities"
DefaultContainerName="ShoppingCartv2Entities" EnableFlattening="False"
EntitySetName="NumberFeatureViews"
Select="it.[FeatureName], it.[FeatureSetUp], it.[FeatureMonthly]" Where="">
<WhereParameters>
<asp:SessionParameter DefaultValue="0" Name="CartID" SessionField="ShoppingCartv2_CartId" />
</WhereParameters>
</asp:EntityDataSource>
<!-- ENTITY DATA SOURCE FOR FEATURES [END] -->
</li>
</ItemTemplate>
<LayoutTemplate>
<ul ID="itemPlaceholderContainer" runat="server" style="">
<li runat="server" id="itemPlaceholder" />
</ul>
</LayoutTemplate>
</asp:ListView>
<asp:EntityDataSource ID="NumberPackageView_EDM" runat="server"
AutoGenerateWhereClause="True" ConnectionString="name=ShoppingCartv2Entities"
DefaultContainerName="ShoppingCartv2Entities" EnableFlattening="False"
EntitySetName="NumberPackageViews"
Select="it.[NumberID], it.[Number], it.[Destination], it.[PkgName], it.[PkgMonthly]" Where="">
<WhereParameters>
<asp:SessionParameter DefaultValue="0" Name="CartID" SessionField="ShoppingCartv2_CartId" />
</WhereParameters>
</asp:EntityDataSource>我现在唯一的问题是,由于结果是在会话购物车上被过滤的,所以它重复了存储在FeatureCart中的每个数字下的所有特性,而不是显示针对特定数字选择的特性。(只有当客户向购物车中添加多个电话号码时,才会发生这种情况)
示例:
0800 123 0001
0800 123 0002
而不是
0800 123 0001
0800 123 0002
有人能告诉我,我如何只显示针对相关数字选择的功能,而不是对每个数字进行相同的选择(如果这有意义的话)?
发布于 2012-08-18 17:21:06
您可能要尝试的一个选项是创建一个列表,并将该列表中的两个表中的行存储起来,然后将列表绑定到网格。例如:
public class Main
{
public void BindData()
{
List<MyList> myResults = new List<MyList>();
//Add rows from numbercart to list object
foreach (var item in NumberCart)
{
myResults.Add(new MyList { Item = item.item, Price = item.price });
}
//Add rows from feature cart to list object
foreach (var item in FeatureCart)
{
myResults.Add(new MyList { Item = item.item, Price = item.price });
}
//Bind to datagrid
myDataGrid.DataSource = myResults;
}
}
public class MyList
{
public string Item {get; set;}
public float Price {get; set;}
}https://stackoverflow.com/questions/12018833
复制相似问题