У меня есть DataGridView , где пользователь вставляет данные о различных продуктах.Один из столбцов содержит данные о дате истечения срока действия элемента.Мне сказали, чтобы пользователю было проще и быстрее набирать эту дату, поэтому мне нужно сделать формат даты примерно таким: "ddMMyy" (без разделителей точки или косой черты между днем, месяцем игод, всего 2 цифры года).DataGrid привязан к моей базе данных , поэтому я предполагаю, что мне следует преобразовать введенные пользователем данные в принятый формат базы данных ("dd.MM.yyyy") до того, как будет выполнено обновление базы данных.
Однако я попытался выполнить это обновление в событии CellLeave , так как это первое событие, которое вызывается, когда пользователь покидает ячейку.Это не сработало, пробовал в CellEndEdit , CellValidating и CellValidate , но все равно безуспешно (обновление в DataTable выполняется в CellValidate событие).Я попробовал следующий код, но на точке останова кажется, что я форматирую не фактический текст в DataGrid, а старое значение, которое уже находится в базе данных:
If dgv.CurrentCell.ColumnIndex = dgv.Columns("Expiry_Date").Index Then
Dim strData As String = dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString()
Dim day As String = strData.Substring(0, 2)
Dim month As String = strData.Substring(2, 2)
Dim year As String = strData.Substring(4, 2)
strData = day & "." & month & "." & year
Dim d As Date = Date.Parse(strData)
dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = d
End If
Значение, вставленное в ячейку DataGridViewбыл «160420», который должен был быть отформатирован как «16.04.2020», но strData показывал «20.09.2021», то есть старое значение, которое было в базе данных до редактирования.
Я знаю, что могу упустить что-то, что на самом деле довольно легко, но до сих пор мне не удалось решить это.Несмотря на то, что я предоставил код VB.NET, любая справка по C # также приветствуется, так как я могу легко конвертировать между ними.