2013-09-28 2 views
1

Q : 기본 키가있는 여러 테이블로 구성된보기를 만들었습니다. ASP.NET에서 GridView를 사용하여 데이터베이스의 행을 업데이트하고 삭제합니다. 이 행은 두 개의 다른 테이블로 구성됩니다. ASP.NET에서 GridView를 사용하여 업데이트하고 삭제하려면 어떻게해야합니까? SQL Server는 모든 시도를하기 때문에 "여러 테이블에 액세스하기 때문에 뷰를 업데이트 할 수 없습니다"라는 말로 인해 어려움을 겪고 있습니다.여러 테이블로 구성된 VIEW에서 UPDATE/DELETE 행 SQL Server/Visual Studio

그것은 당신이 UPDATE를 자동으로 생성하고 뷰가 여러 테이블로 구성 될 때의 GridView의 "데이터 Sourc 선택"에 문을 삭제할 수 없습니다 밝혀졌습니다.

나에게 도와주세요 사람 :(

CREATE VIEW [dbo].[viewProcedureWithPrice] 
    AS 
    SELECT  dbo.[PROCEDURE].ProcedureID, dbo.[PROCEDURE].Name, dbo.[PROCEDURE].Type, dbo.[PROCEDURE].Status, dbo.PRICE_HISTORY.Price, 
          dbo.PRICE_HISTORY.EffectivityDate 
    FROM   dbo.[PROCEDURE] INNER JOIN 
          dbo.PRICE_HISTORY ON dbo.[PROCEDURE].ProcedureID = dbo.PRICE_HISTORY.ProcedureID 

    GO 

CREATE TABLE [dbo].[PROCEDURE](
    [ProcedureID] [int] IDENTITY(1,1) NOT NULL, 
    [Name] [varchar](100) NULL, 
    [Type] [varchar](100) NULL, 
    [Status] [varchar](20) NULL, 
CONSTRAINT [PK_PROCEDURE] PRIMARY KEY CLUSTERED 
(
    [ProcedureID] 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 

CREATE TABLE [dbo].[PRICE_HISTORY](
    [HistoryID] [int] IDENTITY(1,1) NOT NULL, 
    [ProcedureID] [int] NULL, 
    [Price] [decimal](10, 2) NULL, 
    [EffectivityDate] [date] NULL, 
CONSTRAINT [PK_PRICE_HISTORY] PRIMARY KEY CLUSTERED 
(
    [HistoryID] 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 

ALTER TABLE [dbo].[PRICE_HISTORY] WITH CHECK ADD CONSTRAINT [FK_PRICE_HISTORY_PROCEDURE] FOREIGN KEY([ProcedureID]) 
REFERENCES [dbo].[PROCEDURE] ([ProcedureID]) 
GO 

ALTER TABLE [dbo].[PRICE_HISTORY] CHECK CONSTRAINT [FK_PRICE_HISTORY_PROCEDURE] 
GO 
+1

이 방식은 구식이지만 항상 ObjectDataSource를 개체를 사용할 수 있습니다, 그것은 당신이-드릴 아래로 객체로와의 턴은 "필요한를 만들 수 있습니다 것"ODS "의 특정 테이블을 선택을 할 수 있습니다 CRUD "문을 사용하여 기본 CRUD (Create-Read-Update-Delete) 기능을 자동으로 처리합니다. –

답변

0

내가 질문을 이해한다면, 내가 무슨 짓을하는 것은 아마도 추가 (다른 명령의 이름으로 행에 내 자신의 삭제 버튼을 추가 "MyDelete"를 말할 수있는 적절한 명령 인수.) 행 또는 사용 DataKeys을 식별 GridView_RowCommand 이벤트를 잡아 수동 거기 삭제를 수행합니다.

어쩌면 더 나은 방법이 있지만, 이것은 작동합니다.

난을 참조해야 할 것이다 코드가 더 자세히 설명됩니다.