0

I am a newbie to the world of web development in .Net

I created a database with Microsoft SQL Server Management Studio 2012.
The table that I created is this:

Id -> Int
Name -> nvarchar(100)
SortOrder -> Int

Null is not allowed in all columns.
The (Is Identitiy) of the Id column is set to Yes.

I inserted some data.
The Id is inserted automatically starting from 1.
I inserted 13 records, so the last Id value is 13.

I then moved to Visual Studio 2013 to work with the data.
I added three controls:
(1) GridView
(2) DetailsView
(3) SqlDataSource

The GridView is working very well, there are no problems with it.

The DetailsView is working, but the problem is that when I insert a new record its Id field contains unexpected value. I said the last Id I have in this table is 13. The next one must be 14. But the GridView shows me 1004 instead of 14. I tried to insert another record but it continues to 1005 instead of 15.

Where does the 00 come from?
How to fix that?

Below is just the code for the three controls that I added to 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>
Saleh Feek
  • 2,048
  • 8
  • 34
  • 56
  • How many times you tried this and failed? Identity keeps on incrementing for failed inserts, if id = 2, and you failed to insert with SQL statement twice, next time you insert, id will become 5. If this is just experimental table, then truncate table, and try again. – Arindam Nayak Oct 11 '14 at 18:06
  • @ArindamNayak I know what you are taking about. I created a new table for that purpose, but the problem is still exist. – Saleh Feek Oct 11 '14 at 18:18
  • right click on YourTable =>Script Table as =>Create to=>New Query Editor Windows and Paste that Sql Script IN your Question – Dgan Oct 11 '14 at 18:35

0 Answers0