을 삭제 내가 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 템플릿의 유효성 검사 도구에 액세스 할 수 있습니까?
그것은 뒤에 코드없이 작동합니다. 실제로 낙관적 동시성 모드를 사용하지 않을 때 문제가됩니다. 낙관적 동시성을 사용하지 않을 때 모든 것이 작동하는 이유는 무엇입니까? 아니면 진짜 질문, 왜 GridView 완전히이 모드에서 특히 기능이되지 않습니다? someDescription 필드에 텍스트가있는 경우 편집/삭제가이 모드에서 작동한다는 점을 기억하십시오. – Different111222