Маски в dataGridView

191
29 сентября 2017, 15:29

Подскажите, как сделать так, чтобы при редактировании ячейки в dataGridView, при вводе некорректных данных (например формат ячейки DATE, а вводятся буквы) выдавалось предупреждение?

А если вводится дата в формате 10122017, она переводилась бы в формат 10.12.2017.

База данных импортируется из SQLite.

Answer 1

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

Вариант с DataTable:

DataTable dataTable; // поле формы

// Где-то в коде
dataTable = new DataTable();
// Задаём столбцу тип DateTime
dataTable.Columns.Add("Date", typeof(DateTime));
// Грузим в таблицу данные
dataTable.Rows.Add(DateTime.Now);
// Привязываем к гриду
dataGridView.DataSource = dataTable;
// Задаём отображаемый формат
dataGridView.Columns["Date"].DefaultCellStyle.Format = "dd.MM.yyyy";

Вариант с типизированной коллекцией:

public class Data
{
    public DateTime Date { get; set; }
}
// Взять наиболее подходящую коллекцию.
// Может быть ObservableCollection, BindingList.
List<Data> data;
// Создаём и заполняем коллекцию данными
data = new List<Data> { new Data { Date = DateTime.Now } };
// Биндинг
dataGridView2.DataSource = data;
// Формат
dataGridView.Columns["Date"].DefaultCellStyle.Format = "dd.MM.yyyy";

Однако, такие "предупреждения" не удобны для пользователей.

Нужно использовать события CellValidating, CellValidated и вручную определять желаемое поведение.

По поводу перевода из одного формата в другой на лету. Всё реализуемо, но тут возможны конфликты с заданным форматом вывода. Думаю, нужно обрабатывать события CellFormatting и, возможно, EditingControlShowing - а далее работать с полученным текстбоксом.

READ ALSO
Как передать переменную в функцию из другого js файла

Как передать переменную в функцию из другого js файла

Допустим у меня есть два файла: 1js и 2

422
Как автоматически менять прокси phantomjs?

Как автоматически менять прокси phantomjs?

Возникла проблема c прокси при работе с phantomjs

232
не срабатывает функция целиком, хотя по отдельности все работает

не срабатывает функция целиком, хотя по отдельности все работает

Всем привет, помогите найти ошибку в вычислении факториалаПо условию задачи при num = 0, функция должна выдавать 1

215
Вызов из замыкания JS

Вызов из замыкания JS

Почему не выводится Alert? Понимаю, что замыкание, но почему не понятноКак его вывести? Спасибо!

263