ASP。NET Core, Angular2购物车使用Web API和EF 1.0.1

介绍 在本文中,让我们看看如何使用ASP创建购物车。NET Core, Angular 2, Entity Framework 1.0.1和Web API的模板包。 请注意 请阅读我们的前一篇文章,它对如何开始使用ASP做了深入的解释。NET Core模板包 ASP。NET Core Angular 2 EF 1.0.1 Web API使用模板包。https://www.codeproject.com/Articles/1164078/ASP-NET-Core-Angular-Master-Detail-HTML-Grid-using 在这篇文章中, 在SQL Server中创建示例数据库和ItemDetails表,以显示在我们的web应用程序中。创建ASP。NET Core Angular 2 Starter应用程序(。使用模板包创建EF, DBContext类和模型类。创建我们的组件TypeScript文件,以获得WEB API JSON结果使用Http模块。按项目名称过滤项目。从项目文本框keyup事件显示项目的搜索名称。选择和添加项目到购物车。在购物车中显示总价格,总数量和总价格。显示购物车细节。 这篇文章将详细解释如何使用ASP创建一个简单的购物车。NET Core, Angular2, Web API和EF模板包。 在这个购物车演示应用程序中,我们有3个部分 显示所有项目和过滤器项目在HTML表使用Angular2从WEB API。将选定的项目添加到购物车前详细显示。显示价格,数量和总计所有项目在购物车。 显示所有项目和筛选项目 首先,我们使用Angular2在购物页面中显示所有商品的详细信息。所有项目细节都将从WEB API加载。用户还可以根据项目名称筛选项目。当用户在项目名称过滤文本框中输入任何字符时,相关项目的详细信息将从数据库动态加载到购物页面。 显示所选项目的详细信息 当用户点击图像名称时,我们会在顶部显示详细的项目细节,以将选中的项目添加到购物车中。当用户点击“添加到购物车”按钮时,选中的商品将被添加到购物车中。 购物车的细节 当用户点击“添加商品到购物车”按钮时,选中的商品将被添加到购物车中,在添加到购物车之前,我们检查商品是否已经添加到购物车中。如果项目已经添加到购物车,那么我们将增加购物车中的数量,如果项目没有添加,那么新选择的项目将添加到购物车。在购物车中,我们还显示已添加到购物车中的商品的数量。在购物车中,我们还计算总数量,总价格和Grand Price的总购物细节,将显示在购物项目细节的最后。 先决条件 确保已在计算机中安装了所有先决条件。如果没有,那么下载并安装所有,一个一个。 首先,从这个链接下载并安装带有更新3的Visual Studio 2015。如果你有Visual Studio 2015,但还没有更新到更新3,从这个链接下载并安装Visual Studio 2015更新3。下载并安装。net Core 1.0.1下载并安装TypeScript 2.0下载安装Node.js v4.0或以上版本。我安装了V6.9.1(下载链接)。下载和安装下载ASP。NET Core模板包visz文件从这个链接。 使用的代码 步骤1创建数据库和表 我们将创建一个ItemDetails表,用于购物车网格数据绑定。 下面是创建数据库、表和示例插入查询的脚本。 在SQL服务器中运行此脚本。我用过SQL Server 2014.  隐藏,收缩,复制Code

-- =============================================  
-- Author : Shanu  
-- Create date : 2017-02-03
-- Description : To Create Database,Table and Sample Insert Query  
-- Latest  
-- Modifier : Shanu  
-- Modify date : 2017-02-03  
-- ============================================= 
--Script to create DB,Table and sample Insert data 
USE MASTER 
GO 
-- 1) Check for the Database Exists .If the database is exist then drop and create new DB 
IF EXISTS (SELECT [name] FROM sys.databases WHERE [name] = 'ShoppingDB' ) 
DROP DATABASE ShoppingDB 
GO 
 
CREATE DATABASE ShoppingDB 
GO 
 
USE ShoppingDB 
GO 
 
-- 1) //////////// ItemDetails table 
-- Create Table ItemDetails,This table will be used to store the details like Item Information  
 
IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'ItemDetails' ) 
DROP TABLE ItemDetails 
GO 
 
CREATE TABLE ItemDetails 
( 
Item_ID int identity(1,1), 
Item_Name VARCHAR(100) NOT NULL, 
Item_Price int NOT NULL, 
Image_Name VARCHAR(100) NOT NULL, 
Description VARCHAR(100) NOT NULL, 
AddedBy VARCHAR(100) NOT NULL, 
CONSTRAINT [PK_ItemDetails] PRIMARY KEY CLUSTERED  
(  
[Item_ID] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
) ON [PRIMARY]  
 
GO 
 
-- Insert the sample records to the ItemDetails Table 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Access Point',950,'AccessPoint.png','Access Point for Wifi use','Shanu') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('CD',350,'CD.png','Compact Disk','Afraz') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Desktop Computer',1400,'DesktopComputer.png','Desktop Computer','Shanu') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('DVD',1390,'DVD.png','Digital Versatile Disc','Raj') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('DVD Player',450,'DVDPlayer.png','DVD Player','Afraz') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Floppy',1250,'Floppy.png','Floppy','Mak') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('HDD',950,'HDD.png','Hard Disk','Albert') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('MobilePhone',1150,'MobilePhone.png','Mobile Phone','Gowri') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Mouse',399,'Mouse.png','Mouse','Afraz') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('MP3 Player ',897,'MultimediaPlayer.png','Multi MediaPlayer','Shanu') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Notebook',750,'Notebook.png','Notebook','Shanu') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Printer',675,'Printer.png','Printer','Kim') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('RAM',1950,'RAM.png','Random Access Memory','Jack') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('Smart Phone',679,'SmartPhone.png','Smart Phone','Lee') 
Insert into ItemDetails(Item_Name,Item_Price,Image_Name,Description,AddedBy) values('USB',950,'USB.png','USB','Shanu') 
 
select * from ItemDetails

步骤2-创建ASP。NET Core Angular 2应用程序 在安装了上面列出的所有先决条件和ASP。NET Core模板,点击开始>>项目在祝辞Visual Studio 2015 >>Visual Studio 2015,在你的桌面上。单击New祝辞祝辞项目。选择Web祝辞祝辞ASP。NET Core Angular 2启动器。输入项目名称并单击OK。 在创建ASP。NET Core Angular 2应用,等几秒钟。您将看到所有依赖项都自动恢复。 我们将在我们的项目中使用所有这些来创建、构建和运行我们的Angular 2。NET Core模板包,WEB API和EF 1.0.1 3 .创建实体freamework 添加实体框架包 在我们的ASP中添加实体框架包。网络核心应用程序。打开项目。JSON文件和在依赖项中添加下面一行。 请注意 这里我们使用的是EF 1.0.1版本。 隐藏,复制Code

"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", 
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 

当我们保存项目时。我们可以看到json文件的引用被恢复。 几秒钟后,我们可以看到实体框架包已经恢复,所有的引用已经添加。 添加连接字符串 添加连接字符串我们的SQL连接打开了“appsettings”。是的,这是一个json文件,这个文件看起来像下面的默认图像。 在这个appsettings。json文件添加我们的连接字符串 隐藏,复制Code

"ConnectionStrings": { 
    "DefaultConnection": "Server=YOURDBSERVER;Database=ShoppingDB;user id=SQLID;password=SQLPWD;Trusted_Connection=True;MultipleActiveResultSets=true;" 
  },

注意:根据本地连接更改SQL连接字符串。 下一步是创建一个名为“Data”的文件夹来创建我们的模型和DBContext类。 为项目详细信息创建模型类 我们可以通过在数据文件夹中添加一个新的类文件来创建模型。右键单击数据文件夹,然后单击Add>单击Class。输入类名作为itemDetails并单击Add。 现在在这个类中,我们首先创建属性变量,添加ItemDetails。我们会在我们的WEB API控制器中使用它 隐藏,收缩,复制Code

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using System.ComponentModel.DataAnnotations; 
 
namespace Angular2ASPCORE.Data 
{ 
public class ItemDetails 
    { 
        [Key] 
        public int Item_ID { get; set; } 
 
        [Required] 
        [Display(Name = "Item_Name")] 
        public string Item_Name { get; set; } 
 
        [Required] 
        [Display(Name = "Item_Price")] 
        public int Item_Price { get; set; } 
 
        [Required] 
        [Display(Name = "Image_Name")] 
        public string Image_Name { get; set; } 
 
        [Required] 
        [Display(Name = "Description")] 
        public string Description { get; set; } 
 
        [Required] 
        [Display(Name = "AddedBy")] 
        public string AddedBy { get; set; } 
    } 
}

创建数据库上下文 DBContext是用于建立到数据库的连接的实体框架类。 我们可以通过在数据文件夹中添加一个新的类文件来创建一个DBContext类。右键单击数据文件夹,然后单击Add>单击Class。输入类名ItemContext并单击Add。 在这个类中,我们继承了DbContext并为ItemDetails表创建了Dbset。 隐藏,复制Code

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.EntityFrameworkCore; 
 
namespace Angular2ASPCORE.Data 
{ 
    public class ItemContext : DbContext 
    { 
        public ItemContext(DbContextOptions<ItemContext> options) 
            : base(options) { } 
        public ItemContext() { } 
        public DbSet<ItemDetails> ItemDetails { get; set; } 
    } 
}  

Startup.CS 现在我们需要将数据库连接字符串和提供程序添加为SQL SERVER。要添加这个,我们在setup .cs文件中配置服务方法下添加以下代码。 隐藏,复制Code

// Add Entity framework . 
            services.AddDbContext<ItemContext>(options => 
             options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

步骤4创建Web API 要创建我们的WEB API控制器,右键单击Controllers文件夹。单击Add并单击New Item。 单击ASP。右面入网单击Web API控制器类。输入名称为“itemDetailsAPI”。然后点击添加。 在这里,我们只使用Get方法从数据库获取所有ItemDetails结果,并使用Angular2将最终结果绑定到html文件。 在这个web API中,我们获得了所有的ItemDetails和ItemDetails 由条件项目名加载。 隐藏,收缩,复制Code

[Produces("application/json")] 
    [Route("api/ItemDetailsAPI")]  
    public class ItemDetailsAPI : Controller 
    { 
        private readonly ItemContext _context; 
 
        public ItemDetailsAPI(ItemContext context) 
        { 
            _context = context; 
        } 
 
        // GET: api/values 
 
        [HttpGet] 
        [Route("Details")] 
        public IEnumerable<ItemDetails> GetItemDetails() 
        { 
            return _context.ItemDetails; 
 
        } 
 
 
        // GET api/values/5 
        [HttpGet] 
        [Route("Details/{ItemName}")] 
        public IEnumerable<ItemDetails> GetItemDetails(string ItemName) 
        { 
            //return _context.ItemDetails.Where(i => i.Item_Name == ItemName).ToList(); ; 
            return _cont
      }

为了测试它,我们可以运行我们的项目并复制get方法的API路径,这里我们可以看到get的API路径是/ API/ ItemDetailsAPI/Details 运行程序并粘贴上面的API路径来测试我们的输出。 为了通过ItemName获得项目的详细信息,这里我们可以看到从ItemName“DVD”开始的所有项目详细信息已经被加载。 / api / ItemDetailsAPI /细节/ DVD 使用Angular2 我们在ClientApp/App文件夹下创建所有与Angular2相关的应用程序、模块、服务、组件和html模板。 我们创建“model”文件夹来添加我们的模型,并在app文件夹下创建“shopping”文件夹来创建typescript和html文件来显示项目细节。 备注-图像文件夹 首先在购物文件夹中创建一个名为“Images”的文件夹。我已经使用这个文件夹来显示所有的购物车图像。如果您将购物映像存储在代码的其他路径中,则需要相应地更改。 步骤5创建我们的第一个组件TypeScript 右键点击购物文件夹,然后点击添加新项目。从左侧选择客户端,选择TypeScript文件,并将该文件命名为“shop .component.ts”,然后点击添加。 首先我们创建ItemDetails.ts 和CartItemDetails。ts模型作为typescript文件。 ItemDetails.ts  隐藏,复制Code

//// For ItemDetails
export interface ItemDetails {
    Item_ID: number;
    Item_Name: string;
    Item_Price: number;
    Image_Name: string;
    Description: string;
    AddedBy: string;
}  

CartItemDetails.ts  隐藏,复制Code

export class CartItemDetails {
    constructor(
        public CItem_ID: number,
        public CItem_Name: string,
        public CImage_Name: string,
        public CDescription: string,
        public CAddedBy: string,
        public CItem_Price: number,
        public CQty: number,
        public CTotalPrice: number
    ) { }
}  

我们将这个类导入到我们的shop .component中,以绑定JSon结果。 在students.component.ts文件中,我们有三个部分,首先是 接下来是组件部分,接下来是用于编写业务逻辑的类。 首先,我们导入angular文件以用于组件;这里我们导入http来使用我们的Angular2组件中的http客户端。 在组件中,我们有选择器和模板。Selector是为这个应用程序提供一个名称,在html文件中,我们使用这个选择器名称来显示在html页面中。 在模板中,我们给出输出的html文件名。在这里,我们将创建一个html文件为“students.component.html”。 导出类是主要类,我们在其中执行要在组件模板中使用的所有业务逻辑和变量声明。在这个类中,我们获得API方法结果并将结果绑定到学生数组。 为了便于理解,我在代码部分注释了每个部分。 隐藏,收缩,复制Code

import { Component, Injectable, Inject, EventEmitter, Input, OnInit, Output, NgModule  } from <a href="mailto:'@angular/core'">'@angular/core'</a>; 
import { FormsModule  } from <a href="mailto:'@angular/forms'">'@angular/forms'</a>; 
import { ActivatedRoute, Router } from <a href="mailto:'@angular/router'">'@angular/router'</a>; 
import { BrowserModule } from <a href="mailto:'@angular/platform-browser'">'@angular/platform-browser'</a>;  
import { Http,Headers, Response, Request, RequestMethod, URLSearchParams, RequestOptions } from "@angular/http"; 
import { ItemDetails } from '../model/ItemDetails'; 
import { CartItemDetails } from '../model/CartItemDetails'; 
 
 
@Component({ 
    selector: 'shopping', 
    template: require('./shopping.component.html') 
}) 
 
 
export class shoppingComponent { 
    //Declare Variables to be used 
 
    //To get the WEb api Item details to be displayed for shopping 
    public ShoppingDetails: ItemDetails[] = [];    
    myName: string; 
 
    //Show the Table row for Items,Cart  and Cart Items. 
    showDetailsTable: Boolean = true; 
    AddItemsTable: Boolean = false; 
    CartDetailsTable: Boolean = false; 
    public cartDetails: CartItemDetails[] = []; 
 
    public ImageUrl = require("./Images/CD.png"); 
    public cartImageUrl = require("./Images/shopping_cart64.png"); 
 
 
    //For display Item details and Cart Detail items 
    public ItemID: number; 
    public ItemName: string = ""; 
    public ItemPrice: number = 0; 
    public Imagename: string = ""; 
    public ImagePath: string = ""; 
    public Descrip: string =  "";    
    public txtAddedBy: string = ""; 
    public Qty: number = 0;  
 
    //For calculate Total Price,Qty and Grand Total price 
    public totalPrice: number = 0; 
    public totalQty: number = 0; 
    public GrandtotalPrice: number = 0; 
 
    public totalItem: number = 0; 
 
 
    //Inital Load 
    constructor(public http: Http) { 
        this.myName = "Shanu"; 
        this.showDetailsTable = true;  
        this.AddItemsTable = false; 
        this.CartDetailsTable = false; 
        this.getShoppingDetails(''); 
    } 
 
    //Get all the Item Details and Item Details by Item name 
    getShoppingDetails(newItemName) { 
      
        if (newItemName == "") { 
            this.http.get('/api/ItemDetailsAPI/Details').subscribe(result => { 
                this.ShoppingDetails = result.json(); 
            }); 
        } 
        else { 
            this.http.get('/api/ItemDetailsAPI/Details/' + newItemName).subscribe(result => { 
                this.ShoppingDetails = result.json(); 
            }); 
        } 
    } 
 
    //Get Image Name to bind 
    getImagename(newImage) {  
        this.ImageUrl = require("./Images/" + newImage); 
    } 
 
    // Show the Selected Item to Cart for add to my cart Items. 
    showToCart(Id, Name, Price, IMGNM, Desc,user) 
    { 
        this.showDetailsTable = true; 
        this.AddItemsTable = true; 
        this.CartDetailsTable = false; 
        this.ItemID = Id; 
        this.ItemName = Name; 
        this.ItemPrice = Price; 
        this.Imagename = require("./Images/" + IMGNM); 
        this.ImagePath = IMGNM 
        this.Descrip = Desc; 
        this.txtAddedBy = user; 
    } 
 
    // to Show Items to be added in cart 
    showCart() { 
        this.showDetailsTable = false; 
        this.AddItemsTable = true; 
        this.CartDetailsTable = true; 
        this.addItemstoCart();  
    } 
    // to show all item details 
    showItems() { 
        this.showDetailsTable = true; 
        this.AddItemsTable = false; 
        this.CartDetailsTable = false;       
    } 
 
    //to Show our Shopping Items details 
 
    showShoppingItems() { 
        if (this.cartDetails.length <= 0) 
        { 
            alert("Ther is no Items In your Cart.Add Items to view your Cart Details !") 
            return; 
        } 
        this.showDetailsTable = false; 
        this.AddItemsTable = false; 
        this.CartDetailsTable = true; 
    } 
 
    //Check the Item already exists in Cart,If the Item is exist then add only the quantity else add selected item to cart. 
    addItemstoCart() { 
       
        var count: number = 0; 
        var ItemCountExist: number = 0; 
        this.totalItem = this.cartDetails.length; 
      if (this.cartDetails.length > 0) { 
          for (count = 0; count < this.cartDetails.length; count++) { 
              if (this.cartDetails[count].CItem_Name == this.ItemName) { 
                  ItemCountExist = this.cartDetails[count].CQty + 1; 
                  this.cartDetails[count].CQty = ItemCountExist; 
              } 
          } 
      } 
            if (ItemCountExist <= 0) 
            {  
                this.cartDetails.push( 
                    new CartItemDetails(this.ItemID, this.ItemName, this.ImagePath, this.Descrip, this.txtAddedBy, this.ItemPrice, 1, this.ItemPrice));  
     
            } 
            this.getItemTotalresult(); 
    } 
 
    //to calculate and display the total price information in Shopping cart. 
     getItemTotalresult() { 
    this.totalPrice = 0; 
    this.totalQty = 0; 
    this.GrandtotalPrice = 0; 
    var count: number = 0; 
    this.totalItem = this.cartDetails.length; 
    for (count = 0; count < this.cartDetails.length; count++) { 
        this.totalPrice += this.cartDetails[count].CItem_Price; 
        this.totalQty += (this.cartDetails[count].CQty); 
        this.GrandtotalPrice += this.cartDetails[count].CItem_Price * this.cartDetails[count].CQty; 
    }   
 
} 
 
    //remove the selected item from the cart. 
    removeFromCart(removeIndex) { 
        alert(removeIndex); 
        this.cartDetails.splice(removeIndex, 1); 
 
        this.getItemTotalresult(); 
    } 
}

步骤6创建第一个组件HTML文件 右键点击购物文件夹,然后点击添加新项目。从左侧选择客户端,选择html文件,并将该文件命名为“shopping.component.html”,然后单击添加。 编写下面的html代码来将结果绑定到我们的html页面中,以显示所有的购物项目和购物车细节。 隐藏,收缩,复制Code

<h1>{{myName}} ASP.NET Core , Angular2 Shopping Cart using   Web API and EF 1.0.1    </h1> 
<hrstyle="height: 1px;color: #123455;background-color: #d55500;border: none;color: #d55500;"/> 
  
 
<p*ngIf="!ShoppingDetails"><em>Loading Student Details please Wait ! ...</em></p> 
 <!--<pre>{{ ShoppingDetails | json }}</pre>-->  
 
  
<tableid="tblContainer"style='width: 99%;table-layout:fixed;'> 
    <tr*ngIf="AddItemsTable"> 
        <td> 
            <tablestyle="background-color:#FFFFFF; border: dashed 3px #6D7B8D; padding: 5px;width: 99%;table-layout:fixed;"cellpadding="2"cellspacing="2"> 
                <trstyle="height: 30px;  color:#ff0000 ;border: solid 1px #659EC7;"> 
                    <tdwidth="40px"> </td> 
                    <td> 
                        <h2> <strong>Add Items to Cart</strong></h2> 
                    </td> 
 
                </tr> 
                <tr> 
                    <tdwidth="40px"> </td> 
                    <td> 
                        <table> 
                            <tr> 
                               
                                <td> 
 
                                    <imgsrc="{{Imagename}}"width="150"height="150"/> 
 
                                </td> 
                                <tdwidth="30"></td> 
                                <tdvalign="top"> 
                                    <tablestyle="color:#9F000F;font-size:large"cellpadding="4"cellspacing="6"> 
 
                                        <tr> 
                                            <td> 
                                                <b>Item code </b> 
                                            </td> 
 
                                            <td> 
                                                : {{ItemID}} 
                                            </td> 
 
                                        </tr> 
                                        <tr> 
                                            <td> 
                                                <b>   Item Name</b> 
                                            </td> 
 
                                            <td> 
                                                : {{ItemName}} 
                                            </td> 
 
                                        </tr> 
                                        <tr> 
                                            <td> 
                                                <b> Price  </b> 
                                            </td> 
 
                                            <td> 
                                                : {{ItemPrice}} 
                                            </td> 
 
                                        </tr> 
                                        <tr> 
                                            <td> 
                                                <b> Description </b> 
 
                                            </td> 
                                            <td> 
                                                : {{Descrip}} 
                                            </td> 
 
                                        </tr> 
                                        <tr> 
                                            <tdalign="center"colspan="2"> 
                                                <table> 
 
                                                    <tr> 
                                                        <td> 
                                                            <button(click)=showCart() style="background-color:#4c792d;color:#FFFFFF;font-size:large;width:200px"> 
                                                                Add to Cart 
                                                            </button>  
                                                             
 
                                                        </td> 
                                                        <tdrowspan="2"><imgsrc="{{cartImageUrl}}"/></td> 
                                                    </tr> 
 
                                                </table> 
                                            </td> 
                                        </tr> 
                                    </table> 
                                </td> 
                            </tr> 
                        </table> 
                    </td> 
                </tr> 
            </table> 
        </td> 
    </tr> 
    <tr> 
        <td><hrstyle="height: 1px;color: #123455;background-color: #d55500;border: none;color: #d55500;"/></td> 
    </tr> 
    <tr*ngIf="CartDetailsTable"> 
        <td> 
             
            <tablewidth="100%"> 
                <tr> 
                    <td> 
                        <tablestyle="background-color:#FFFFFF; border: dashed 3px #6D7B8D; padding: 5px;width: 100%;table-layout:fixed;"cellpadding="2"cellspacing="2"> 
                            <trstyle="height: 30px;  color:#123455 ;border: solid 1px #659EC7;"> 
                                <tdwidth="40px"> </td> 
                                <tdwidth="60%"> 
                                    <h1> My Recent Orders Items <strongstyle="color:#0094ff"> ({{totalItem}})</strong></h1>  
                                </td> 
                                <tdalign="right"> 
                                    <button(click)=showItems() style="background-color:#0094ff;color:#FFFFFF;font-size:large;width:300px;height:50px; 
                              border-color:#a2aabe;border-style:dashed;border-width:2px;"> 
                                        Add More Items 
                                    </button> 
                                      
                                </td> 
                            </tr> 
                        </table> 
                        
                    </td> 
                </tr> 
                <tr> 
                    <td> 
                        <tablestyle="background-color:#FFFFFF; border:solid 2px #6D7B8D;padding: 5px;width: 100%;table-layout:fixed;"cellpadding="2"cellspacing="2"> 
                            <trstyle="height: 30px; background-color:#336699 ; color:#FFFFFF ;border: solid 1px #659EC7;"> 
                                <tdwidth="30"align="center">No</td> 
                                <tdwidth="80"align="center"> 
                                    <b>Image</b> 
                                </td> 
                                <tdwidth="90"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Item Code</b> 
                                </td> 
                                <tdwidth="140"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Item Name</b> 
                                </td> 
                                <tdwidth="160"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Decription</b> 
                                </td> 
                                <tdwidth="90"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Price</b> 
                                </td> 
                                <tdwidth="90"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Quantity</b> 
                                </td> 
                                <tdwidth="90"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Total Price</b> 
                                </td> 
                                <td></td> 
                            </tr> 
 
                            <tbody*ngFor="let detail of cartDetails ; let i = index"> 
 
                                <tr> 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"align="center"> 
                                        {{i+1}} 
 
                                    </td> 
                                    <tdalign="center"style="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"*ngIf!="getImagename(detail.CImage_Name)"> 
                                            <imgsrc="{{ImageUrl}}"style="height:56px;width:56px"> 
                                        </span> 
                                    </td> 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.CItem_ID}} 
                                        </span> 
                                    </td> 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.CItem_Name}} 
                                        </span> 
                                    </td> 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.CDescription}} 
                                        </span> 
                                    </td> 
 
                                    <tdalign="right"style="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.CItem_Price  | number}} 
                                        </span> 
                                    </td> 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"align="right"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.CQty}} 
                                        </span> 
                                    </td> 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"align="right"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.CTotalPrice*detail.CQty  | number}} 
                                        </span> 
                                    </td> 
 
                                    <tdalign="center"style="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                                  <button(click)=removeFromCart(i) style="background-color:#e11919;color:#FFFFFF;font-size:large;width:220px;height:40px;"> 
                                            Remove Item from Cart 
                                        </button> 
                                    </td> 
                                </tr> 
                            </tbody> 
                            <tr> 
                                <tdcolspan="5"height="40"align="right"> <strong>Total </strong></td> 
                                <tdalign="right"height="40"><strong>Price: {{ totalPrice | number}}</strong></td> 
                                <tdalign="right"height="40"><strong>Qty : {{ totalQty | number}}</strong></td> 
                                <tdalign="right"height="40"><strong>Sum: {{ GrandtotalPrice | number}}</strong></td> 
                                <td></td> 
                            </tr> 
                        </table> 
                    </td> 
                </tr> 
                 
            </table> 
        </td> 
    </tr> 
   
    <tr*ngIf="showDetailsTable"> 
 
        <td> 
            <tablewidth="100%"style="background-color:#FFFFFF; border: dashed 3px #6D7B8D; padding: 5px;width: 100%;table-layout:fixed;"cellpadding="2"cellspacing="2"> 
                <tr> 
                    <td> 
                        <tablestyle="background-color:#FFFFFF; border: dashed 3px #6D7B8D; padding: 5px;width: 100%;table-layout:fixed;"cellpadding="2"cellspacing="2"> 
                            <trstyle="height: 30px;  color:#134018 ;border: solid 1px #659EC7;"> 
                                <tdwidth="40px"> </td> 
                                <tdwidth="60%"> 
                                    <h2> <strong>Item Details</strong></h2> 
                                </td> 
                                <tdalign="right"> 
                                    <button(click)=showShoppingItems() style="background-color:#d55500;color:#FFFFFF;font-size:large;width:300px;height:50px; 
                              border-color:#a2aabe;border-style:dashed;border-width:2px;"> 
                                        Show My Cart Items 
                                    </button> 
                                      
                                </td> 
                            </tr> 
                        </table> 
                    </td> 
                </tr> 
                
                <tr> 
                    <td> 
 
                        <tablestyle="background-color:#FFFFFF; border: solid 2px #6D7B8D; padding: 5px;width: 100%;table-layout:fixed;"cellpadding="2"cellspacing="2"*ngIf="ShoppingDetails"> 
 
 
                            <trstyle="height: 30px; background-color:#336699 ; color:#FFFFFF ;border: solid 1px #659EC7;"> 
                                <tdwidth="40"align="center"> 
                                    <b>Image</b> 
                                </td> 
 
                                <tdwidth="40"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Item Code</b> 
                                </td> 
 
                                <tdwidth="120"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Item Name</b> 
                                </td> 
 
                                <tdwidth="120"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Decription</b> 
                                </td> 
 
                                <tdwidth="40"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>Price</b> 
                                </td> 
 
                                <tdwidth="90"align="center"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;cursor: pointer;"> 
                                    <b>User Name</b> 
                                </td> 
 
                            </tr> 
                            <trstyle="height: 30px; background-color:#336699 ; color:#FFFFFF ;border: solid 1px #659EC7;"> 
                                <tdwidth="40"align="center"> 
                                    Filter By -> 
                                </td> 
 
                                <tdwidth="200"colspan="5"style="border: solid 1px #FFFFFF; padding: 5px;table-layout:fixed;"> 
 
                                    Item Name : 
 
 
                                    <inputtype="text"(ngModel)="ItemName"(keyup)="getShoppingDetails(myInput.value)"#myInputstyle="background-color:#fefcfc;color:#334668;font-size:large; 
                                                   border-color:#a2aabe;border-style:dashed;border-width:2px;"/> 
                                </td> 
 
                            </tr> 
 
                            <tbody*ngFor="let detail of ShoppingDetails"> 
                                <tr> 
                                    <tdalign="center"style="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"*ngIf!="getImagename(detail.image_Name)"> 
                                            <imgsrc="{{ImageUrl}}"style="height:56px;width:56px"(click)=showToCart(detail.item_ID,detail.item_Name,detail.item_Price,detail.image_Name,detail.description,detail.addedBy)> 
                                        </span> 
 
                                    </td> 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.item_ID}} 
                                        </span> 
                                    </td> 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.item_Name}} 
                                        </span> 
                                    </td> 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.description}} 
                                        </span> 
                                    </td> 
 
                                    <tdalign="right"style="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.item_Price}} 
                                        </span> 
                                    </td> 
 
 
                                    <tdstyle="border: solid 1px #659EC7; padding: 5px;table-layout:fixed;"> 
                                        <spanstyle="color:#9F000F"> 
                                            {{detail.addedBy}} 
                                        </span> 
                                    </td> 
                                </tr> 
                        </table> 
                    </td> 
                    </tr> 
                </table> 
              </td>    
             </tr> 
           </table> 

构建并运行应用程序 的兴趣点 首先在SQL服务器中创建数据库和表。您可以运行本文中的SQL脚本来创建ShoppingDB数据库和ItemDetails表,并且不要忘记更改“appsettings.json”中的连接字符串。 历史 ASPCoreAngular2Shopping.zip——2017/02/03 本文转载于:http://www.diyabc.com/frontweb/news17330.html

posted @ 2020-08-13 02:34  Dincat  阅读(198)  评论(0编辑  收藏  举报