如何给DataGrid添加自动增长列

如何给DataGrid添加自动增长列

我想我们都知道在数据库中如何添加自增长列,我们可以将这个自增长列绑定到DataGrid上使得用户方便的知道现在是第几行,今天我介绍一种不用数据库就可以简单显示出自增长列的方法,有人可能会说既然数据库支持我们为什么这样做?我想有如下的两个理由:1、不是所有的表都有自增长列。2、当自增长列不自动复制的时候会出现断号的现象,即使复制这也是有可能发生的。但是先要说明的是这个方法只能显示出来当前页的序号,也就是说如果有分页它只能标记当前这一页的序号。如果要同样实现分页的功能我想使用数据库要比这种方法简单一些,因为如果还是用这个方法那么将要处理状态,这里我不考虑这种方法,但是在文章的结尾我将给出一个数据库的解决方案。 好了下面是正题,首先我们需要在页面里放置一个DataGrid。我们用Northwind数据库做例子: html页面的DataGrid如下所示: <asp:datagrid id="grdTest" runat="server" Height="228px" Width="262px" AutoGenerateColumns="False" AllowPaging="True">      <Columns>       <asp:TemplateColumn>        <ItemTemplate> <!-- 这里是关键-->         <SPAN>           <%# Container.ItemIndex+1 %></SPAN>        </ItemTemplate>       </asp:TemplateColumn>       <asp:BoundColumn DataField="CategoryName"></asp:BoundColumn>       <asp:BoundColumn DataField="Description"></asp:BoundColumn>      </Columns>     </asp:datagrid> 下面我们可以写他的后台代码cs的文件了我们在它的Page_Load里面添加绑定方法如下所示: private void Page_Load(object sender, System.EventArgs e)   {    // 在此处放置用户代码以初始化页面    strConnection = ConfigurationSettings.AppSettings["sa"].ToString();    myConnection = new SqlConnection(strConnection);    SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT CategoryName, Description FROM Categories",myConnection); // 为了分页方便ds是一个全局的变量    myAdapter.Fill(ds);    this.grdTest.DataSource = ds.Tables[0].DefaultView;    this.grdTest.DataBind(); }

从上面的过程可以看出我们使用的是表Categories,这样我们就可以产生一列自增长的列,此列是从1开始的。如果我们想要一个从0开始的列有该怎么办呢?我们可以把<!-- 这里是关键-->下面的<span>里面的东西换成<asp:Label id=lblRowNumber runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex", "{0}") %>'>就可以了。

如果我们想要实现分页也显示的方法我们将使用DataTable的方法来实现,首先我们将DataGrid的列全部变成绑定列(为了方便演示,不是必须)。如下所示: <asp:table id="tbData" runat="server" BackColor="LightSteelBlue" Height="13px" Width="16px" Font-Names="宋体" Font-Name="宋体" Font-Size="8pt" CellPadding="1" CellSpacing="0" BorderColor="black" BorderWidth="1" Gridlines="Both"></asp:table><br>     <asp:datagrid id="grdTest" runat="server" Height="228px" Width="262px" AutoGenerateColumns="False" PageSize="2" AllowPaging="True">      <Columns>       <asp:BoundColumn DataField="RowNumber" HeaderText="RowNumber"></asp:BoundColumn>       <asp:BoundColumn DataField="CategoryName"></asp:BoundColumn>       <asp:BoundColumn DataField="Description"></asp:BoundColumn>      </Columns>     </asp:datagrid> 在后台我们添加一个函数: private DataTable GetRowNumberTable(DataTable dt){    DataColumn col = new DataColumn("RowNumber",Type.GetType("System.Int32"));    dt.Columns.Add(col);    for(int i = 0;i<=dt.Rows.Count-1;i++){     if(0 == i)      dt.Rows[i][col] = 1;     else       dt.Rows[i][col] = Convert.ToInt32(dt.Rows[i-1][col]) +1;    }    return dt;   } 然后我们将原来数据源改成如下: this.grdTest.DataSource = this.GetRowNumberTable(ds.Tables[0]).DefaultView; 这样一来即使分页,数字也是连续的,并且将编号应用于所有的行而不是当前这一页的行。

希望次文对大家有帮助!文中如有错误请指正e_mail:wu_jian830@hotmail.com谢谢!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

HTML生成PDF(c#)

Calling wkhtmltopdf to generate PDF from HTML 老外最多人加分的那篇做法,使用wkhtmtopdf(GPL协议)可以...

248100
来自专栏乐百川的学习频道

Vert.x学习笔记(二) Vert.x Web Client

本文参考自Vert.x Web Client官方文档。套用官网的话来说, Vert.x Web Client是一个异步的HTTP和HTTP/2网络客户端。 ...

52860
来自专栏Porschev[钟慰]的专栏

【2013年】开发常见问题回顾(一)

记录开发中遇到的和别人问的较多的问题.... IE10中LinkButton不可用     这应该是2013年初遇到的一个BUG,当使用Asp.Net开发Web...

29250
来自专栏GreenLeaves

WCF系列教程之WCF客户端调用服务

1、创建WCF客户端应用程序需要执行下列步骤 (1)、获取服务终结点的服务协定、绑定以及地址信息 (2)、使用该信息创建WCF客户端 (3)、调用操作 (4)、...

23590
来自专栏晓晨的专栏

Entity Framework Core 2.0 使用代码进行自动迁移

16430
来自专栏木宛城主

SharePoint 创建 Lookup 类型的Site Column解决跨站问题

在某些情况下,我们需要去引用其他List中的数据,比如在网站集(Site Collection)上有个List叫Country,在其子网站(WebSite)有...

25290
来自专栏james大数据架构

MVC中实现加载更多

需要实现的功能: 数据太多想初次加载部分数据,在底部加上“加载更多”按钮 点击后加载第二页数据(从数据库只取指定页数据)后接在已有数据后面(类似于android...

26250
来自专栏跟着阿笨一起玩NET

ASP.NET用HttpListener实现文件断点续传

本文转载:http://www.cnblogs.com/TianFang/archive/2007/01/03/610739.html

13010
来自专栏菩提树下的杨过

关于Membership/Role您可能不知道的细节

1.关于System.Web.Security.Membership.ValidateUser("username", "password") 每次调用这个时,...

195100
来自专栏跟着阿笨一起玩NET

无法将类型“System.Collections.Generic.IEnumerable<EmailSystem.Model.TemplateInfo>”隐式转换为“System.Collection

31110

扫码关注云+社区

领取腾讯云代金券