一个经常碰到的情况:GridView需要添加一个序号列,并且从1开始自动编号。而数据库中的ID往往是不连续的(会有记录被删除的情况),我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。
思路:在GridView每一行,既Row,被生成的时候,在序号单元格中输出该行的ID+1(第一行是从0开始编的,因此要+1)
首先,在ASPX页面中,需要手动给GridView添加一个BoundField。
<ASP:GRIDVIEW id=GridView1 EnableModelValidation="True" AutoGenerateColumns="False" runat="server"><COLUMNS><ASP:BOUNDFIELD HeaderText="序号"><HEADERSTYLE Height="24px" /><ITEMSTYLE Height="24px" Font-Size="14px" /></ASP:BOUNDFIELD><ASP:BOUNDFIELD HeaderText="卡号" DataField="Sn" /><ASP:BOUNDFIELD HeaderText="货物规格" /><ASP:BOUNDFIELD HeaderText="数量" /><ASP:BOUNDFIELD HeaderText="供货商ID" DataField="GhsId" /><ASP:BOUNDFIELD HeaderText="收货人姓名" DataField="Shr" /><ASP:BOUNDFIELD HeaderText="收货人电话" DataField="ShrContact" /><ASP:BOUNDFIELD HeaderText="送货地址" DataField="ShAddress" /><ASP:BOUNDFIELD HeaderText="物流单号" /><ASP:BOUNDFIELD HeaderText="备注" DataField="Bz" /></COLUMNS><ROWSTYLE BorderWidth="1px" BorderStyle="Solid" BorderColor="Black" /> </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);} }