给Repeater、Datalist和Datagrid增加自动编号列

来源:互联网 发布:儿童在线画图软件 编辑:程序博客网 时间:2024/04/28 09:48

【转】http://blog.sina.com.cn/s/blog_4a09dfeb0100054d.html

 

在.NET中,Data Repeat、Datalist和Datagrid是重要的数据表现控件,我们常常使用它们来显示大量从数据库中读出的数据,在进行显示数据时,我们往往需要对大量的记录进行自动编号,本文简单介绍了.NET中这在个控件中数据自动编号的方法。

 

 

本文中使用的例子如下:

    内容

1     Taye

2     BOx

3     Glass

4     StarCraft


一、正序
A
AllowPaging=False情况下,使用以下方法就可以实现:

1<asp:DataGrid id="DataGrid1" runat="server">
2    <Columns>
3     <asp:TemplateColumn>
4      <ItemTemplate>
5       <%# Container.ItemIndex + 1%>
6      </ItemTemplate>
7     </asp:TemplateColumn>
8    </Columns>
9 </asp:DataGrid>


不过更有趣的方法是使用这个方法:

1<asp:DataGrid id="DataGrid1" runat="server">
2    <Columns>
3     <asp:TemplateColumn>
4      <ItemTemplate>
5       <%# this.DataGrid1.Items.Count + 1%>
6      </ItemTemplate>
7     </asp:TemplateColumn>
8    </Columns>
9</asp:DataGrid>


也许有些人会觉得很奇怪为什么Items.Count会这样,而不是出来全部总合,但如果你了解绑定的过程时就容易理解。[从上面来看就是在ItemCreated事件中进行绑定所以得到的Items.Count刚好是当前的序号]

B
AllowPaging="True"下,如果DataGrid支持分页则可以如下:

1<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
2    <Columns>
3     <asp:TemplateColumn>
4      <ItemTemplate>
5       <%# this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize + Container.ItemIndex + 1%>
6      </ItemTemplate>
7     </asp:TemplateColumn>
8    </Columns>
9</asp:DataGrid>


二、倒序的方法

序号  内容

4     Taye

3     BOx

2     Glass

1     StarCraft


由上面可以知道使用this.DataGrid1.Items.Count - Container.ItemIndex + 1方法是不可能实现的,得到值而且全会为1,分页的情况下更是一样.所以一开始我们就要取得数据源的行数:

 1private int rowscount = 0;
 2         protected int RowsCount
 3         {
 4              get{ return rowscount;}
 5              set{ this.rowscount = value; }
 6         }
 7     
 8         private void Page_Load(object sender, System.EventArgs e)
 9         {
10              // 
在此处放置用户代码以初始化页面
11              if(!IsPostBack)
12                   this.BindData();
13         }
14         private void BindData()
15         {
16              SqlConnection cn = new SqlConnection("server=(local);database=NorthWind;uid=sa;pwd=");
17              string str=@"SELECT Employees.EmployeeID, Orders.EmployeeID
18                                 FROM Employees INNER JOIN
19                       Orders ON Employees.EmployeeID = Orders.EmployeeID ";
20              SqlDataAdapter sqlda = new SqlDataAdapter(str,cn);
21              DataSet ds = new DataSet();
22              sqlda.Fill(ds);
23              this.RowsCount = ds.Tables[0].Rows.Count;
24              this.DataGrid1.DataSource = ds;
25              this.DataGrid1.DataBind();
26}

 

1<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
2                            <Columns>
3                                   <asp:TemplateColumn>
4                                          <ItemTemplate>
5                                                 <%# RowsCount - DataGrid1.CurrentPageIndex * DataGrid1.PageSize - Container.ItemIndex %>
6                                          </ItemTemplate>
7                                   </asp:TemplateColumn>
8                            </Columns>
9                     </asp:DataGrid>

原创粉丝点击