GridView自动序号
如果是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模板列中.这种的缺点是到第二页分页时又重新开始了.
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="5%" />
<ItemTemplate>
<%#Container.DataItemIndex+1%>
</ItemTemplate>
</asp:TemplateField>
第二种方式分页时进行了计算,这样会累计向下加.
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="5%" />
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# this.MyListGridView.PageIndex * this.MyListGridView.PageSize + this.MyListGridView.Rows.Count + 1%>'/>
</ItemTemplate>
</asp:TemplateField>
还有一种方式放在cs代码中,和第二种相似.
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="5%" />
</asp:BoundField>
{
if (e.Row.RowIndex != -1)
{
int indexID = this.myGridView.PageIndex * this.myGridView.PageSize + e.Row.RowIndex + 1;
e.Row.Cells[0].Text = indexID.ToString();
}
}
都是非常简单的,其实原理都是一样的.实现同一种效果,方法很多,实际上读取数据的时候也可以实现.
为了不至于字数太多,给阅读带来不便,SQL的方法放在以下链接里面:其实都是非常简单的入门级,可是有的时候容易忘记.
第一种:使用identity函数增加临时表的方法
select * from #tmp
drop table #tmp
在SQL2005中新增了ROW_NUMBER()函数,给我们带来了很多方便,使用方法如下: