Dynamically Creating Autonumber Column in GridView in VB.NET

In this article we will know how to create an auto number column in GridView. We can add AutoNumber column by using Container.DataItemIndex property in .aspx page of the GridView.

Program

Default.aspx code
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<
body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="GridView1" runat="server"
              AllowPaging="True" AutoGenerateColumns="False"
              PageSize="6"
              AlternatingRowStyle-BackColor="red"
              AlternatingRowStyle-ForeColor="yellow" >
    <Columns>
    <asp:TemplateField HeaderText="Sno">
    <ItemTemplate>
        <%# Container.DataItemIndex + 1 %>
    </ItemTemplate>

    </asp:TemplateField>

    <asp:BoundField DataField="sname" HeaderText="Name"/>
    <asp:BoundField DataField="saddress" HeaderText="Address" />
       <asp:BoundField DataField="smarks" HeaderText="Marks" />
       <asp:BoundField DataField="year" HeaderText="Year" />            
    </Columns>
        <HeaderStyle BackColor="#FF9966" />
<AlternatingRowStyle BackColor="Red" ForeColor="Yellow"></AlternatingRowStyle>
    </asp:GridView>
    </div>
    </form>
</body>
</
html>

Default.aspx.vb code

Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
    Inherits System.Web.UI.Page
    Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("ConnectionString").ToString()
    Dim con As New SqlConnection(strConnString)
    Dim str As String
    Dim com As SqlCommand

    Dim sqlda As SqlDataAdapter
    Dim ds As DataSet

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) HandlesMe.Load
        bind()
    End Sub
    Sub bind()
        con.Open()
        str = "select sname,smarks,saddress,year from student"
        com = New SqlCommand(str, con)

        sqlda = New SqlDataAdapter(str, con)
        ds = New DataSet
        sqlda.Fill(ds, "student")
        GridView1.DataSource = ds

        GridView1.DataMember = "student"
        GridView1.DataBind()
        con.Close()
    End Sub
    Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e AsSystem.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
        GridView1.PageIndex = e.NewPageIndex
        bind()
    End Sub
End Class

Output

gridview-in-VB.net.gif