我是在Sql里生成的,因为我用存储过程写入数据,所以就在存储过程中给ID字段赋值,然后
在把ID号绑定到dataGrid,就可以了,在DataGrid中我还没用过。

解决方案 »

  1.   

    DataGrid用到的datatable中添加一列,AutoIncrease=1
      

  2.   

    用ID绑定datagrid,取值加一
    function getlastid() as integer
         dim intnewid as integer=cint(mydatagrid.items(0).cells(0).text)+1
         return(intnewid)
       end function
      

  3.   

    响应DataGrid的ItemDataBound事件
    VB.Net:
    if e.Item.ItemIndex <> - 1 then
        e.Item.Cells(0).Text = e.Item.ItemIndex + 1
    end if
      

  4.   

    可以去看一下:http://dotnet.aspx.cc/ShowDetail.aspx?id=C0B53A2D-EF45-4E07-9C95-2849700F32A8
      

  5.   

    在SQL中写吧,例如有自增的列(或者不重复的列)id
    select (select count(*) from table1 A  where B.id>=A.id) AS 编号,* from table1 AS B
      

  6.   

    <ItemTemplate>
    <%# Container.ItemIndex + 1%>
    </ItemTemplate>
      

  7.   

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

  8.   

    if(e.Item.ItemIndex != -1)
    e.Item.Cells[0].Text = Convert.ToString(e.Item.ItemIndex + 1);
      

  9.   

    if(e.Item.ItemIndex != -1)
    e.Item.Cells[0].Text = Convert.ToString(e.Item.ItemIndex + 1);
      

  10.   

    如果用(无间道II(前传))所说的方法,在datagrid中重新排序后,序号就乱了。