【问题标题】:How to display row number in gridview如何在gridview中显示行号
【发布时间】:2017-05-08 12:47:26
【问题描述】:

我使用下面的代码,但它没有工作.. 它没有显示包含该字段的列。

<asp:TemplateField>
  <ItemTemplate>
    <%# Container.DataItemIndex + 1 %>
  </ItemTemplate>
</asp:TemplateField>

我在后面的代码中添加了我的其他列,这是问题所在?

 OleDbDataAdapter sqlArchiveData = new OleDbDataAdapter(sql_archive);

     DataTable dt = new DataTable();
     connProdcc1.Open();
     sqlArchiveData.Fill(dt);

foreach (DataColumn column in dt.Columns)
         {
             BoundField field = new BoundField();
             field.DataField = column.ColumnName;
             field.HeaderText = column.ColumnName.Replace("_"," ");
             field.SortExpression = column.ColumnName;
             AggregateGridView.Columns.Add(field);
         }
AggregateGridView.DataSource = dt;
         AggregateGridView.DataBind();

有没有人知道如何以其他方式做到这一点?

我尝试像下面这样,但它会将我的行号计算在我 Fill()DataTable 的所有数据之后,然后在每一行中添加一个数字

     DataColumn columnIndexRow = new DataColumn();
     columnIndexRow.DataType = System.Type.GetType("System.Int32");
     columnIndexRow.ColumnName = "id";
     dt.Columns.Add(columnIndexRow);

     for (int i = 0; i < dt.Rows.Count; i++)
     {
         // your index is in i
         var row = dt.NewRow();
         row["id"] = i;
         dt.Rows.Add(row);
     }

【问题讨论】:

    标签: c# asp.net gridview datatable


    【解决方案1】:

    将行号字段添加到数据表

    OleDbDataAdapter sqlArchiveData = new OleDbDataAdapter(sql_archive);
    
    DataTable dt = new DataTable();
    connProdcc1.Open();
    sqlArchiveData.Fill(dt);
    
    dt = AutoNumberedTable(dt);
    
    foreach (DataColumn column in dt.Columns)
    {
        BoundField field = new BoundField();
        field.DataField = column.ColumnName;
        field.HeaderText = column.ColumnName.Replace("_"," ");
        field.SortExpression = column.ColumnName;
        AggregateGridView.Columns.Add(field);
    }
    AggregateGridView.DataSource = dt;
    AggregateGridView.DataBind();
    
    
    private DataTable AutoNumberedTable(DataTable SourceTable)
    {
        DataTable ResultTable = new DataTable();
        DataColumn AutoNumberColumn = new DataColumn();
        AutoNumberColumn.ColumnName="S.No.";
        AutoNumberColumn.DataType = typeof(int);
        AutoNumberColumn.AutoIncrement = true;
        AutoNumberColumn.AutoIncrementSeed = 1;
        AutoNumberColumn.AutoIncrementStep = 1;
        ResultTable.Columns.Add(AutoNumberColumn);
        ResultTable.Merge(SourceTable);
        return ResultTable;
    }
    

    希望这可能会有所帮助。 :)

    注意:我没有测试过这段代码。

    【讨论】:

      【解决方案2】:

      谢谢各位!我只是找出答案。我会做一些事情,比如在行索引和第一列更新一个单元格

           for (int i = 0; i < dt.Rows.Count; i++)
           {
               dt.Rows[i][0] = i;
           }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-31
        • 1970-01-01
        相关资源
        最近更新 更多