2016-07-21 5 views
1

Я пытаюсь форматировать столбцы в элементе управления GridView, помещая код внутри события DataBound. Это не работает, потому что по какой-то причине коллекция колонок не заполняется. Элемент управления связан, он работает, но в коллекции столбцов отображается количество нулей, поэтому код не работает.
Идеи?Столы столбцов управления ASP.NET GridView

 protected void gvReport_DataBound(object sender, EventArgs e) 
    { 
     for (int columnIndex = 0; columnIndex <= gvReport.Columns.Count - 1; columnIndex += 1) 
     { 
      var col = ((BoundField)gvReport.Columns[columnIndex]); 

      if (object.ReferenceEquals(col.DataField.GetType(), typeof(System.DateTime))) 
       col.DataFormatString = "MM/dd/yyyy"; 
     } 
    } 

ответ

1

Столбцы, созданные с AutoGenerateColumns="true" не доступны в Columns коллекции GridView. Вы можете обработать ячейки в обработчике событий RowDataBound:

protected void gvReport_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int i = 0; i < e.Row.Cells.Count; i++) 
     { 
      object value = (e.Row.DataItem as DataRowView).Row.ItemArray[i]; 

      if (value is DateTime) 
      { 
       TableCell cell = e.Row.Cells[i]; 
       cell.Text = ((DateTime)value).ToShortDateString(); 
      } 
     } 
    } 
} 
Смежные вопросы