欢迎光临
我们一直在努力

如何给DataGrid添加自动增长列-.NET教程,数据库应用

建站超值云服务器,限时71元/月

 

如何给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;
这样一来即使分页,数字也是连续的,并且将编号应用于所有的行而不是当前这一页的行。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何给DataGrid添加自动增长列-.NET教程,数据库应用
分享到: 更多 (0)