2012-04-20 2 views
0

을 삭제 내가 SQL 서버 2008 R2 Express를, C# ASP.NET 4빈 행/

를 사용하고 난 SQL 서버의 테이블이 (데이터 포함)이 T-SQL로 만든 :

CREATE DATABASE [someDatabase] 
GO 
USE [someDatabase] 

CREATE TABLE someTable (someCode [int] NOT NULL IDENTITY(1,1) PRIMARY KEY, someDescription [nvarchar](50) NULL); 
INSERT INTO [dbo].[someTable] (someDescription) VALUES (''),('row 2, 1st non empty line'),('3'),(''),('5th row'); 
SELECT * FROM [dbo].[someTable] 

나는 또한 위의 표에 ConnectionString을 가진 GRIDVIEW을 포함하는 Default.aspx를 파일을 포함하여 편집이 있고 옵션 (템플릿) 삭제 - 아니 코드 뒤에 :

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataKeyNames="someCode" DataSourceID="SqlDataSource1"> 
     <Columns> 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
      <asp:BoundField DataField="someCode" HeaderText="someCode" 
       InsertVisible="False" ReadOnly="True" SortExpression="someCode" /> 
      <asp:BoundField DataField="someDescription" HeaderText="someDescription" 
       SortExpression="someDescription" /> 
     </Columns> 
    </asp:GridView> 

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConflictDetection="CompareAllValues" 
     ConnectionString="<%$ ConnectionStrings:someDatabaseConnectionString %>" 
     DeleteCommand="DELETE FROM [someTable] WHERE [someCode] = @original_someCode AND (([someDescription] = @original_someDescription) OR ([someDescription] IS NULL AND @original_someDescription IS NULL))" 
     InsertCommand="INSERT INTO [someTable] ([someDescription]) VALUES (@someDescription)" 
     OldValuesParameterFormatString="original_{0}" 
     SelectCommand="SELECT * FROM [someTable]" 
     UpdateCommand="UPDATE [someTable] SET [someDescription] = @someDescription WHERE [someCode] = @original_someCode AND (([someDescription] = @original_someDescription) OR ([someDescription] IS NULL AND @original_someDescription IS NULL))"> 
     <DeleteParameters> 
      <asp:Parameter Name="original_someCode" Type="Int32" /> 
      <asp:Parameter Name="original_someDescription" Type="String" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="someDescription" Type="String" /> 
     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="someDescription" Type="String" /> 
      <asp:Parameter Name="original_someCode" Type="Int32" /> 
      <asp:Parameter Name="original_someDescription" Type="String" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 

GridView가 데이터베이스 테이블에 잘 묶여있는 것처럼 보입니다. 그러나 optimistic 동시성 사용하면 문제가 있습니다. 그런 다음 설명이없는 행을 삭제하거나 편집 모드에서 해당 행을 업데이트 할 수 없습니다.

GridView는 브라우저 (IE9, Chrome 18)에서 제대로 보이지만 설명이없는 행 중 하나를 삭제하려고하면 작동하지 않습니다. 설명 행이없는 편집 중 하나를 클릭하면 새 값을 입력 할 수있는 기회가 생깁니다. 그러나 업데이트를 클릭해도 아무 일도 일어나지 않습니다.

someDescription이 채워진 행을 편집/삭제하는 데 문제가 없습니다.. 이 아니라면 낙관적 동시성을 사용하면 편집과 삭제가 빈 설명에도 적용됩니다.

GridView가 제대로 작동하지 않습니까? 해결 방법이 있습니까?

행 편집 또는 삭제 모드에서 GridView 템플릿의 유효성 검사 도구에 액세스 할 수 있습니까?

답변

0

위의 코드에서 OnRowDeleting="GridView1_RowDeleting", OnRowEditing="GridView1_RowEditing" 또는 OnRowUpdating="GridView1_RowUpdating" 이벤트를 보지 못했습니다. GridView '<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />'에 추가 한대로 편집/업데이트 및 삭제하려면 해당 이벤트를 사용해야합니다. 이 같은

뭔가 :

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView1.EditIndex = e.NewEditIndex; 
    BindData(); 
} 

방문이 링크 : Add, Edit, update, Delete gridview

+0

그것은 뒤에 코드없이 작동합니다. 실제로 낙관적 동시성 모드를 사용하지 않을 때 문제가됩니다. 낙관적 동시성을 사용하지 않을 때 모든 것이 작동하는 이유는 무엇입니까? 아니면 진짜 질문, 왜 GridView 완전히이 모드에서 특히 기능이되지 않습니다? someDescription 필드에 텍스트가있는 경우 편집/삭제가이 모드에서 작동한다는 점을 기억하십시오. – Different111222