gridview自動編號

原文Link:http://ymxy-ok-163-com.javaeye.com/blog/646725

有時候會遇到這樣的情況,就是需要對GridView表格顯示的結果增加一列自動遞增編號列,以標示每一行的序號。要實現這一功能,首先在 GridView 第一列加入一個 TemplateField,並在 TemplateField 的 ItemTemplate 加入一個 Label (ID=lblNo),*.aspx 對應代碼如下:

 

 

  1. <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="Flag,ID" DataSourceID="SqlDataSource1" EmptyDataText="無記錄。">   
  2. <Columns> 
  3. <asp:TemplateField HeaderText="編號">   
  4. <ItemTemplate>   
  5. <asp:Label ID="lblNo" runat="server" Text="Label"></asp:Label>   
  6. </ItemTemplate>   
  7. <ItemStyle Wrap="True" /> 
  8. <HeaderStyle Wrap="False" />   
  9. </asp:TemplateField>   
  10. </Columns> 
  11. </asp:GridView> 
  12.  
  13.  
  14.    

 後在 GridView 的 RowDataBound 事件中,設定每一列的 lblNo 的 Text 屬性值爲 RowIndex 1(因爲 RowIndex 起始編號爲 0 ,所以每一行的自動編號爲 RowIndex 1) 。

  

  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)  
  2. { Label olabel;   
  3. if (e.Row.RowType == DataControlRowType.DataRow)   
  4. {   
  5. olabel = (Label)e.Row.Cells[0].FindControl("lblNo");   
  6. olabel.Text = Convert.ToString(e.Row.RowIndex 1);   
  7. }   
  8. }  
  9.  

如果遇到有分頁時,以上代碼對每一頁都是從1開始編號,所以對於有分頁的情況需要修改成:

 

  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)   
  2. {   
  3. Label olabel;   
  4. if (e.Row.RowType == DataControlRowType.DataRow)   
  5. {   
  6. olabel = (Label)e.Row.Cells[0].FindControl("lblNo");   
  7. olabel.Text = Convert.ToString(GridView1.PageIndex * GridView1.PageSize e.Row.RowIndex 1);   
  8. }   
  9. }  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章