あなたのデータベースにはいくつかの問題があります、私は指摘しなければなりません:
列の名前には、、などのスペースを使用しないで[Our Price]
ください[Expected Delivery]
。できますが、これを行わないことをお勧めします。識別子は、通常の識別子のデフォルトのルールに準拠している必要があります。
金額または通貨の値については、1を使用します。これには多くのメリットがあり、場合によっては1を使用します。あなたがあなたのテーブルでした方法ではありません。MONEY, SMALLMONEY
DECIMAL
NVARCHAR
Products
のようにではなく、日付と時刻のデータ型を使用します。そして最も重要なもの:NVARCHAR
[Expected Delivery]
データベースはこのように正規化されていません。Cateogries
、、Sports
およびに対して個別のテーブルを作成する必要がありますBrands
。
例えば:
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
、挿入元で、スポーツ、カテゴリ、およびブランドのリストをDropDownList
sとして表示する必要があります。ただし、このドロップダウンリストには、エンティティの名前のみが表示されます。CategoryName
[カテゴリ]ドロップダウン、BrandName
[ブランド]ドロップダウンなどにのみ表示されます。また、ドロップダウンリストの次の2つのプロパティを使用してこれを行うことができます。
何かのようなもの:
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)
代わりに複合キーを作成してください。