Изменение формы ячейки Webforms OnRowDataBound приводит к тому, что столбцы появляются только для чтения

Сначала я попытался вручную установить readonly в false. Мой код является балансовой единицей, поэтому я не могу поделиться им здесь. Я сделаю все возможное, чтобы объяснить.

В проектах Webforms моя страница.aspx имеет GridView со всеми перечисленными столбцами, которые я хочу отобразить. Кроме того, он имеет кнопки редактирования, удаления и обновления для каждой строки. Три столбца являются датами, и преобразование данных из Oracle в asp приводит к тому, что даты отображаются в виде "MM/DD/YYYY 12:00:00am". Чтобы снять метку времени, я положил e.Row.Cells[x].Text = e.Row.Cells[x].Text.Split(' ')[0]; в событии OnRowDataBound GridView.

Я думал, что все работает прекрасно, пока я не начал снова тестировать кнопки редактирования. Все три строки, в которых есть даты и указанное выше событие, теперь становятся пустым пробелом, когда я переводю строку в режим редактирования. Если я прокомментирую эти три строки в OnRowDataBound, отметки времени появятся снова, и строки будут доступны для редактирования.

Прежде всего, я должен заставить это работать. Во-вторых, я хотел бы знать, что на самом деле происходит в фоновом режиме. Я довольно новичок в веб-разработке в целом и новичок в asp.net наверняка.

1 ответ

Решение

Если вы создаете свои столбцы в разметке (AutoCreateColumns быть выключенным), вы можете использовать DataFormatString отформатировать столбцы даты вместо изменения текста ячейки в коде:

<asp:BoundField DataField="Date1" DataFormatString="{0:d}" ApplyFormatInEditMode="true" ... />

Строка формата (d в моем примере) можно изменить, чтобы лучше соответствовать вашим предпочтениям. И если столбцы даты являются редактируемыми, вы также можете установить ApplyFormatInEditMode как показано выше.

Другие вопросы по тегам