简体   繁体   中英

How to display row number in gridview

I use code below but it didint work.. It didnt show me column with that field.

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

I add my other columns in code behind and meaby it's the problem?

 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();

Does anone have any idea how to do this in other way?

I try to this like below but it's counts my row number after all data I Fill() into a DataTable and then add to each row a number

     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);
     }

ADD row number field to DataTable

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;
}

Hope this might help. :)

Note: I haven't tested this code.

Thanks guys! I just find out the answer. I do something like updating a cell at row index and first column

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM