如何给DataGrid添加自动增长列

转载 2004年07月01日 09:45:00
CSDN - 文档中心 - .NET    
标题     如何给DataGrid添加自动增长列    cuike519(原作)
关键字     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谢谢!

datagrid自增列

dataset新添加的列为何得不到值?DataSet ds  = new DataSet();str="select content,title,read_amount,[time],id,pic f...
  • jingmi6791
  • jingmi6791
  • 2006年05月15日 11:55
  • 587

如何给DataGrid添加自动增长列

CSDN - 文档中心 - .NET     标题     如何给DataGrid添加自动增长列    cuike519(原作) 关键字     DataGrid;自动增长...
  • rickjelly2004
  • rickjelly2004
  • 2004年07月01日 09:45
  • 724

DataGrid实现自增列、单选、多选

我们为这个DataGrid实现了添加、删除、修改、分页、动态修改内容等功能,今天再来分析一下如何为之添加自增列、单选、多选的功能。首先看一下需要在上次的基础上增加的代码:(1)实现自增列只需要在前台添...
  • bulbul2006
  • bulbul2006
  • 2006年09月05日 13:25
  • 452

如何给DataGrid添加自动增长列

如何给DataGrid添加自动增长列作者:佚名 ASP.NET的跟踪模式详解 [2004-8-9 12:04:46] 在ASP.NET使用javascript的一点小技巧 [2004-7-29 12:...
  • xuandhu
  • xuandhu
  • 2004年10月15日 17:08
  • 648

SQL Server实现列的自动增长

有的表需要添加自增列,在添加新纪录时自动添加一个序号,有两种不错的方法通过T-SQL代码、通过企业管理器在此分享给大家。 一、通过T-SQL代码.  代码如下: create table 职工表  ...
  • abc5382334
  • abc5382334
  • 2014年03月24日 17:09
  • 2813

DataGrid生成序号列

在datagrid的每一行显示当前数据的序号,可以不在数据库中通过临时表的自增列来实现,在datagrid里新建一个模板列,模板列内写上以下代码即可: 1 asp:TemplateColumn Hea...
  • jelink
  • jelink
  • 2006年09月25日 22:19
  • 1057

代码分析-DataGrid实现自增列、单选、多选

 转:http://www.cnblogs.com/lovecherry/archive/2005/03/25/125487.html http://www.cnblogs.com/lovecherr...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2005年12月20日 09:45
  • 752

oracle中自动增长列的实现

创建两个表,用来做测试:create table test(id int,name varchar2(10));create table test1(id int,name varchar2(10))...
  • am2004
  • am2004
  • 2005年12月15日 18:44
  • 7387

SQLServer - 添加自增长列

首先 : 如果想修改某列为自增长列,必须要 删除重建–删除主键约束 (如果要修改列存在约束,需要删除约束) ALTER TABLE tablename DROP CONSTRAINT pkid ...
  • baojiangfeng
  • baojiangfeng
  • 2017年06月01日 10:53
  • 235

mysql上给表增加一个自增长列的脚本

mysql上给表增加一个自增长列的脚本 alter table `userdata_copy` add `id_2` int AUTO_INCREMENT UNIQUE...
  • keenweiwei
  • keenweiwei
  • 2015年10月10日 14:37
  • 2050
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何给DataGrid添加自动增长列
举报原因:
原因补充:

(最多只允许输入30个字)