1

在我的数据库中,我制作了一个带有列的表

ProductId                int            Unchecked
[Sports Name]            nvarchar(50)   Checked
Category                 nvarchar(50)   Checked
Brand                    nvarchar(50)   Checked
Image                    text           Checked
MRP                      varchar(50)    Checked
[Our Price]              varchar(50)    Checked
[You Save]               varchar(50)    Checked
[Shipping Charges]       varchar(50)    Checked
[Expected Delivery]      varchar(50)    Checked

在前面,我创建了许多链接按钮,例如羽毛球、网球、乒乓球等。还有一个下拉列表来选择所需的设备,例如羽毛球的球拍和羽毛球,板球的球棒和球等等。下拉列表以选择其品牌。

现在我希望他们仅在一个页面中显示客户在点击和选择事件中选择的产品,而不是通过为每个类别创建页面一些类似的东西(编码不准确,它只是我想要的样本)

if(badminton.click==true)
{
  cmd.text= seclect * from products where [Sports Name == Badminton] And Category==setectedcategory and so on 
} 
else if(tennis.click==true
{
}
...........so on

或仅在一个语句中,就像

cmd.text= select * from products where [Sports Name]==LinkButton.click And all like this

现在请帮助我,如果你明白我想要什么。

4

1 回答 1

0

您的数据库存在一些问题,我必须指出:

  • 不要在列名中使用空格,例如[Our Price], [Expected Delivery]。可以,但建议不要这样做。您的标识符应符合常规标识符的默认规则

  • 对于货币或货币价值,使用1有很多好处,甚至在某些情况下。不是你在桌子上做的那样。MONEY, SMALLMONEYDECIMALNVARCHARProducts

  • 使用日期和时间数据类型,而不是NVARCHAR像在[Expected Delivery]. 还有最重要的一个:

  • 您的数据库没有以这种方式标准化。Cateogries您应该为和创建单独的SportsBrands

例如:

CREATE TABLE Equipments
(
  EquipmentId   INT NOT NULL IDENTITY(1, 1) 
                CONSTRAINT PK_EquipmentId PRIMARY KEY,
  EquipmentName NVARCHAR(50) NOT NULL
); 

CREATE TABLE Sports
(
   SportId   INT NOT NULL IDENTITY(1,1) 
             CONSTRAINT PK_SportId PRIMARY KEY,
   SportName NVARCHAR(50)
);

CREATE TABLE SportsEquipments 
(
   Id          INT NOT NULL IDENTITY(1, 1)<sup>2</sup> 
               CONSTRAINT PK_SportsEquipmentId PRIMARY KEY,
   SportId     INT NOT NULL 
               CONSTRAINT FK_SportId_Sports FOREIGN KEY 
               REFERENCES Sports(SportId),
   EquipmentId INT NOT NULL 
               CONSTRAINT FK_EquipmentId_Equipments FOREIGN KEY 
               REFERENCES Equipments(EquipmentId)
);

CREATE TABLE Categories
(
   CategoryId   INT NOT NULL IDENTITY(1, 1) 
                CONSTRAINT PK_CategoryId PRIMARY KEY,
   CategoryName NVARCHAR(50)
);

CREATE TABLE Brands
(
   BrandId   INT NOT NULL IDENTITY(1, 1) 
             CONSTRAINT PK_BrandId PRIMARY KEY,
   BrandName NVARCHAR(50)
);

CREATE TABLE Products
(
  ProductId        INT NOT NULL IDENTITY(1, 1) 
                   CONSTRAINT PK_ProductID PRIMARY KEY,
  SportId          INT NOT NULL 
                   CONSTRAINT FK_SportId_Products 
                   FOREIGN KEY REFERENCES Sports(SportId),
  CategoryId       INT NOT NULL 
                   CONSTRAINT FK_CategoryId_Categories 
                   FOREIGN KEY REFERENCES Categories(CategoryId),
  BrandId          INT NOT NULL 
                   CONSTRAINT FK_BrandId_Brands 
                   FOREIGN KEY REFERENCES Brands(BrandId),
  "Image"          TEXT,
  MRP              NVARCHAR(50),
  OurPrice         MONEY,
  YouSave          MONEY,
  ShippingCharges  MONEY,
  ExpectedDeliveryDate DATETIME
);

在此处输入图像描述

我怎样才能以这种方式插入表格?

稍后插入Products表格时,在insert from中,应该将运动、类别和品牌的列表显示为DropDownLists。但是,在这个下拉列表中,您只显示实体的名称。您仅CategoryName在类别下拉列表、BrandName品牌下拉列表等中显示。您可以使用下拉列表的以下两个属性来执行此操作:

就像是:

dropdown.DataSource = dataset;
dropdown.DataValueField  = "CategoryId";
dropdown.DataTextField = "CategoryName";
dropdown.DataBind();
//the same for other entities

然后你应该只从下拉列表中插入选定的 id,你的INSERT语句看起来像:

INSERT INTO Products (SportId, CategoryId, BrandId, ... )
VALUES
(1, 2, 3, ...); 

但是我该如何选择和搜索?

在搜索表单中也是如此,您应该将这些实体显示为下拉列表,然后搜索具有下拉列表选择的 id 的产品:

SELECT ProductId, Name, ...
FROM Products
Where CategoryId = @SelectedCategoryId
 AND SportId = @selectedSportId
...

与您当前的问题相同,您可以从这些实体、类别列表和运动列表以及其他实体动态创建链接按钮。这可以使用GridView控件完成,然后创建数据源并将其绑定到此网格视图。使用<ItemTemplate>as<asp:LinkButton>并将其绑定到查询选择的列名。如果你用谷歌搜索,你会发现很多线程解释了如何做到这一点。例如 :

希望这就是你要找的。


  • 1:在某些情况下,您可能不应该使用它。

  • 2:在 中SportsEquipments,我使用了Id作为主键,这样你的任何装备都可以被很多运动引用。如果您想让每个运动的设备独一无二,请(SportId, EquipmentId)改为使用复合键。

于 2012-11-24T08:41:40.280 回答