如果是SQL2005可以这么操作

select ROW_NUMBER() OVER (ORDER BY CreateDate DESC) AS SortID,.....from TABLE.

为 Gridview 增加一个新的空白列,如下:
<asp:BoundField HeaderText="序号">
            <ItemStyle HorizontalAlign="Center" Width="26px" />
            </asp:BoundField>

在 GridView RowDataBound 事件中编写代码,如下:
protected void RowDataBond1(object sender, GridViewRowEventArgs e)
{
         if (e.Row.RowIndex > -1)
        {
         
         e.Row.Cells[0].Text = Convert.ToString(e.Row.RowIndex + 1);
        }
          
}
这样就会在运行时自动创一个顺序编号的字段。

也可以在前台直接写

此处是用GridView自带分页


<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%# this.GridView1.PageIndex * this.GridView1.PageSize + Container.DataItemIndex + 1%>
</ItemTemplate>
</asp:TemplateField>
    
      下面是用AspNetPager分页控件的情况:

<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%# (this.Pager1.CurrentPageIndex - 1) * this.Pager1.PageSize + Container.DataItemIndex + 1%>
</ItemTemplate>
</asp:TemplateField>

 

第一种方式,直接在Aspx页面GridView模板列中.这种的缺点是到第二页分页时又重新开始了.

GridView自动序号_ide            <asp:TemplateField HeaderText="序号" InsertVisible="False">
GridView自动序号_ide              
<ItemStyle HorizontalAlign="Center" />
GridView自动序号_ide              
<HeaderStyle HorizontalAlign="Center" Width="5%" />
GridView自动序号_ide             
<ItemTemplate>
GridView自动序号_读取数据_05GridView自动序号_分页_06              
<%GridView自动序号_读取数据_07#Container.DataItemIndex+1%>
GridView自动序号_ide            
</ItemTemplate>
GridView自动序号_ide            
</asp:TemplateField>

第二种方式分页时进行了计算,这样会累计向下加.
GridView自动序号_ide            <asp:TemplateField HeaderText="序号" InsertVisible="False">
GridView自动序号_ide              
<ItemStyle HorizontalAlign="Center" />
GridView自动序号_ide              
<HeaderStyle HorizontalAlign="Center" Width="5%" />
GridView自动序号_ide             
<ItemTemplate>
GridView自动序号_ide                 
<asp:Label ID="Label2" runat="server" Text='<%# this.MyListGridView.PageIndex * this.MyListGridView.PageSize + this.MyListGridView.Rows.Count + 1%>'/>
GridView自动序号_ide            
</ItemTemplate>
GridView自动序号_ide            
</asp:TemplateField>

还有一种方式放在cs代码中,和第二种相似.
GridView自动序号_ide          <asp:BoundField HeaderText="序号" >
GridView自动序号_ide              
<ItemStyle HorizontalAlign="Center" />
GridView自动序号_ide              
<HeaderStyle HorizontalAlign="Center" Width="5%" />
GridView自动序号_ide          
</asp:BoundField>

GridView自动序号_ide        protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
GridView自动序号_读取数据_05GridView自动序号_分页_06        
GridView自动序号_读取数据_07{
GridView自动序号_sql_25            
if (e.Row.RowIndex != -1)
GridView自动序号_控件_26GridView自动序号_分页_27            
GridView自动序号_读取数据_07{
GridView自动序号_sql_25                
int indexID = this.myGridView.PageIndex * this.myGridView.PageSize + e.Row.RowIndex + 1;
GridView自动序号_sql_25                 e.Row.Cells[
0].Text = indexID.ToString();
GridView自动序号_sql_31             }

GridView自动序号_sql_32         }

都是非常简单的,其实原理都是一样的.实现同一种效果,方法很多,实际上读取数据的时候也可以实现.
为了不至于字数太多,给阅读带来不便,SQL的方法放在以下链接里面:其实都是非常简单的入门级,可是有的时候容易忘记.
第一种:使用identity函数增加临时表的方法
GridView自动序号_ideselect id = identity(int,1,1),* into #tmp from table
GridView自动序号_ide
select * from #tmp
GridView自动序号_ide
drop table #tmp
GridView自动序号_ide

在SQL2005中新增了ROW_NUMBER()函数,给我们带来了很多方便,使用方法如下:
GridView自动序号_ideSELECT id,ROW_NUMBER() OVER (order by id)as RowNumber FROM Table
有一个方便,as后的别名可以在语句后面作为条件单独使用.