GridView生成序号

来源:互联网 发布:软件外包 编辑:程序博客网 时间:2024/06/05 02:06
GridView 下增加自动编号列

       此处是用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>
 

一个经常碰到的情况:GridView需要添加一个序号列,并且从1开始自动编号。而数据库中的ID往往是不连续的(会有记录被删除的情况),我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。

思路:在GridView每一行,既Row,被生成的时候,在序号单元格中输出该行的ID+1(第一行是从0开始编的,因此要+1)

实现:

首先,在ASPX页面中,需要手动给GridView添加一个BoundField。示例代码如下:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EnableModelValidation="True"    OnRowCreated="GridView1_RowCreated">   

<Columns>       

<asp:BoundField HeaderText="序号">    

        <HeaderStyle Height="24px" />     

       <ItemStyle Font-Size="14px" Height="24px" />  

      </asp:BoundField>    

    <asp:BoundField DataField="Sn" HeaderText="卡号" />   

     <asp:BoundField HeaderText="货物规格" />   

     <asp:BoundField HeaderText="数量" />  

      <asp:BoundField DataField="GhsId" HeaderText="供货商ID" />    

     <asp:BoundField DataField="Shr" HeaderText="收货人姓名" />

      <asp:BoundField DataField="ShrContact" HeaderText="收货人电话" />     

     <asp:BoundField DataField="ShAddress" HeaderText="送货地址" /> 

      <asp:BoundField HeaderText="物流单号" />    

     <asp:BoundField DataField="Bz" HeaderText="备注" />   

 </Columns>   

 <RowStyle BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" />

</asp:GridView>

后台代码这样写:

//Gridview自动生成序号protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e){    if (e.Row.RowIndex > -1)    {        e.Row.Cells[0].Text = Convert.ToString(e.Row.RowIndex + 1);    }}页面直接实现比如直观,知道Container.DataItemIndex 属性的含义就行:

<asp:TemplateField HeaderText="序号">
<ItemTemplate>
   <%# Container.DataItemIndex + 1%>
 </ItemTemplate>
</asp:TemplateField>下面考虑的主要是分页情况下的,在ASP.NET中分页方法一般用GridView自带的分页工具和AspNetPager的比较多。GridView自带的分页写法:

<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%# this.GridView1.PageIndex  * this.GridView1.PageSize + GridView1.Rows.Count + 1%>
</ItemTemplate>
</asp:TemplateField> AspNetPager分页情况下的写法为:

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


页面直接实现比如直观,知道Container.DataItemIndex 属性的含义就行:

<asp:TemplateField HeaderText="序号">
<ItemTemplate>
   <%# Container.DataItemIndex + 1%>
 </ItemTemplate>
</asp:TemplateField>下面考虑的主要是分页情况下的,在ASP.NET中分页方法一般用GridView自带的分页工具和AspNetPager的比较多。GridView自带的分页写法:

<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<%# this.GridView1.PageIndex  * this.GridView1.PageSize + GridView1.Rows.Count + 1%>
</ItemTemplate>
</asp:TemplateField> AspNetPager分页情况下的写法为:

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

原创粉丝点击