Изменение формы ячейки 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
как показано выше.