SqlDataSource插入id 1004而不是14;怎么修?

时间:2014-10-11 18:00:46

标签: asp.net sql-server identifier detailsview

我是.Net网络开发世界的新手

我使用Microsoft SQL Server Management Studio 2012创建了一个数据库 我创建的表是:

Id - >诠释
名称 - >为nvarchar(100)
SortOrder - > Int

所有列都不允许空。
Id列的(Is Identitiy)设置为Yes。

我插入了一些数据 从1开始自动插入Id 我插入了13条记录,因此最后一个Id值为13.

然后我转到Visual Studio 2013来处理数据 我添加了三个控件:
(1)GridView
(2)详情视图
(3)SqlDataSource

GridView运行良好,没有任何问题。

DetailsView正在运行,但问题是当我插入新记录时,其Id字段包含意外值。我说我在这个表中的最后一个ID是13.下一个必须是14.但GridView显示我1004而不是14.我试图插入另一个记录,但它继续到1005而不是15。

00来自哪里?
如何解决?

下面是我添加到Visual Studio的三个控件的代码。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display." AllowPaging="True" AllowSorting="True">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" ButtonType="Button" />
            <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="SortOrder" HeaderText="SortOrder" SortExpression="SortOrder" />
        </Columns>
    </asp:GridView>
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
        DataKeyNames="Id" DataSourceID="SqlDataSource1" DefaultMode="Insert"
        Height="50px" Width="125px">
        <Fields>
            <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="SortOrder" HeaderText="SortOrder" SortExpression="SortOrder" />
            <asp:CommandField ShowInsertButton="True" />
        </Fields>
    </asp:DetailsView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PlanetWroxConnectionString1 %>" DeleteCommand="DELETE FROM [Genre] WHERE [Id] = @Id" InsertCommand="INSERT INTO [Genre] ([Name], [SortOrder]) VALUES (@Name, @SortOrder)" ProviderName="<%$ ConnectionStrings:PlanetWroxConnectionString1.ProviderName %>" SelectCommand="SELECT [Id], [Name], [SortOrder] FROM [Genre]" UpdateCommand="UPDATE [Genre] SET [Name] = @Name, [SortOrder] = @SortOrder WHERE [Id] = @Id">
        <DeleteParameters>
            <asp:Parameter Name="Id" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="SortOrder" Type="Int32" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="SortOrder" Type="Int32" />
            <asp:Parameter Name="Id" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>

0 个答案:

没有答案