首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用EntityDataSources显示来自两个表的数据?

如何使用EntityDataSources显示来自两个表的数据?
EN

Stack Overflow用户
提问于 2012-08-18 13:06:43
回答 1查看 836关注 0票数 1

我正在为一家销售电话号码的公司制作购物车。要购买一个电话号码,“客户”需要经过各种步骤,以配置他们的电话号码,因为他们走。

  • 第一步:选择一个电话号码
  • 第二步:在这个号码中添加一个呼叫包
  • 第三步:添加其他功能,如语音信箱等.
  • 第四步:检查顺序和检查

到目前为止,我的方法是一个向导样式的过程,在这个过程中,我将客户选择存储在一个名为NumberCart的数据库中的表中。这将存储步骤一和步骤二的所有信息。

第三步比较棘手,因为客户可以有许多与他们选择的号码相关联的选项。为了解决这个问题,我决定将它们的特性选择存储在一个名为FeatureCart的独立表中。

我一直在使用实体框架来检索和插入数据。数据模型可以通过剪切和粘贴这个链接来实现(因为我是新手,Stackoverflow只允许我发布两个链接)。

armourcreative.co.uk/EntityDesignerDiagram.bmp

我的问题是,是否有一种方法可以检索两个表,并在网页中呈现结果,以便在下面的链接上显示图像?

示例购物车呈现我想要实现的目标

我所能得到的只有两个EntityDataSources,它们连接到同一个页面上的NumberFeatureView和NumberPackageView,其呈现方式类似于下面链接中的图像:

示例购物车呈现的不是我想要的

正如您所看到的,显示用户选择的方式并不十分清晰,因为它不将该功能与它所属的电话号码相关联。

我的想法是在CartID和NumberID的基础上以某种方式显示与NumberPackageView相匹配的NumberPackageView。

如果有人能告诉我如何完成上述任务,我将非常感激。我可能离目标很远,这就是我迫切需要帮助和指导的原因。

修订

好的,我已经设法让他用下面的代码正确地呈现:

代码语言:javascript
复制
    <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>&nbsp;&nbsp;&rarr;&nbsp;&nbsp;
            <asp:Label ID="DestinationLabel" runat="server" Text='<%# Eval("Destination") %>' />
            <br />
            <asp:Label ID="PkgNameLabel" runat="server" Text='<%# Eval("PkgName") %>' />&nbsp;&nbsp;&nbsp;&nbsp;
            <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

  • 功能语音信箱
  • 特征呼叫记录

有人能告诉我,我如何只显示针对相关数字选择的功能,而不是对每个数字进行相同的选择(如果这有意义的话)?

EN

回答 1

Stack Overflow用户

发布于 2012-08-18 17:21:06

您可能要尝试的一个选项是创建一个列表,并将该列表中的两个表中的行存储起来,然后将列表绑定到网格。例如:

代码语言:javascript
复制
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;}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12018833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档