ASP / VB .NET Форматирование каждой строки вида сетки? - PullRequest
0 голосов
/ 14 сентября 2009

У меня есть Gridview, у которого есть метка времени в качестве одной из строк. Когда я читаю данные из базы данных, данные имеют формат (мм / дд / гггг чч: мм: сс). Я выяснил, как отформатировать так, как я хочу, это просто (мм / дд / гггг) и удаление (чч: мм: сс) со следующим кодом:

  Dim numrows2 = GridView1.Rows.Count
  For i = 0 To numrows2 - 1
        Dim acc = Left(GridView1.Rows(i).Cells(0).Text, 10)
        GridView1.Rows(i).Cells(0).Text = acc
  Next i

Проблема в том, что у этого вида сетки 5 страниц, и это будет работать только для текущей страницы. Например,

  1. при начальной загрузке страницы 1-я страница будет правильно отформатирована
  2. Я нажимаю на страницу 3, этот код отформатирует страницу 1, поэтому страница 3 не будет отформатирована
  3. Я нажимаю на страницу 1, код отформатирует страницу 3

Так что это в основном форматирование текущей страницы, но не выбранной страницы.

Мне нужно либо иметь возможность каждый раз форматировать каждую строку таблицы, либо уметь выбирать выбранную страницу и форматировать эту страницу. Я тоже не знаю, как это сделать.

Любая помощь будет оценена.

Ответы [ 6 ]

2 голосов
/ 14 сентября 2009

Используйте форматирование в столбце данных следующим образом:

<asp:BoundField HeaderText="Date" DataField="SomeDate" DataFormatString="{0:MM/dd/yyyy}">
1 голос
/ 15 сентября 2009

Используйте DataFormatString , но не забудьте добавить HtmlEncode = "false" :

<asp :BoundField DataField="DateColumn"
 DataFormatString="{0:MM/dd/yyyy}"
 HtmlEncode="false" />
1 голос
/ 14 сентября 2009

вы используете границы?

есть свойство DataFormatString, чтобы получить желаемый формат, установите для него значение "MM / dd / yyyy", тогда вам вообще не нужно выполнять какое-либо форматирование в коде, стоящем за

0 голосов
/ 14 сентября 2009

Лучшим способом сделать это, вероятно, будет использование ObjectDataSource и привязка к нему, вы можете отформатировать там данные даты и вернуть некоторый бизнес-объект. ObjectDataSource также обеспечивает более эффективную подкачку страниц, чем простой SqlDataSource (я полагаю, это то, что вы используете?).

Если вы просто выполняете динамический запрос SQL, вы можете отформатировать возвращенные данные там (что-то вроде):

ВЫБРАТЬ КОНВЕРТ (VARCHAR, КОНВЕРТ (DATETIME, OriginalDateValue, 101), 101)

Это помогает? Если вам нужен конкретный код для ObjectDataSource, просто скажите так.

0 голосов
/ 14 сентября 2009

То, что вы хотите сделать, это использовать событие RowDataBound и выполнить привязку данных в этой точке. Метод ToString объекта DateTime может быть переопределен на основе необходимого кода формата. Делая это так, вы делаете это так:

   Private Sub FormatMyGridView _
               (ByVal sender As Object, _
                ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
           Handles gvMyGridView.RowDataBound

      Dim drItems As DataRow

      ' Grid Column Layout (Handy for formatting multiple items)
      ' 0 - View Details Hyperlink
      ' 1 - Id
      ' 2 - Department #
      ' 3 - Request Type
      ' 4 - Employee Number
      ' 5 - Employee Name
      ' 6 - Status
      ' 7 - Effective Date

      If e.Row.RowType = DataControlRowType.DataRow Then

         drRequest =DirectCast(e.Row.DataItem, System.Data.DataRowView).Row

         e.Row.Cells(7).Text = drItems.MyDateField.ToString("MM/dd/yyyy")

      End If    

   End Sub
0 голосов
/ 14 сентября 2009

Вы можете отформатировать столбец для даты, необходимой во время разработки или во время выполнения, с некоторыми свойствами, и он сделает это для всех строк.

Вот учебник по этому вопросу. Имеет хорошую таблицу форматов, которые вы можете использовать .... http://shawpnendu.blogspot.com/2009/04/how-to-format-gridview-rowscolumns-in.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...