Member 14013003 Ответов: 1

Как удалить данные datagridview с датой время с#


пример: если столбец даты равен 2019-7-2, удалите всю дату столбца строки

Извините за мой английский

Что я уже пробовал:

пример: если столбец даты равен 2019-7-2, удалите всю дату столбца строки

Извините за мой английский

1 Ответов

Рейтинг:
2

OriginalGriff

Лучше всего работать с базовыми данными, а не с самим DataGridView:

private void butDelete_Click(object sender, EventArgs e)
    {
    if (MyDataGridView.DataSource is DataTable dt)
        {
        List<int> deleteThese = new List<int>();
        DateTime remove = new DateTime(2019, 2, 7);
        int index = 0;
        foreach (DataRow row in dt.Rows)
            {
            if (row["Appointment"] is DateTime apt && apt == remove)
                {
                deleteThese.Add(index);
                }
            index++;
            }
        foreach (int i in deleteThese)
            {
            dt.Rows[i].Delete();
            }
        }
    }


Member 14013003

извините забыл что я хочу для базы данных mysql

OriginalGriff

- Да? И что же?

BillWoodruff

Привет, возможно, вы захотите указать читателю, что используете более новую функцию сопоставления шаблонов C# 7 оператора ' is.

OriginalGriff

Мне это вроде как начинает нравиться, после первоначального нежелания. Определение области видимости-хорошая идея, но я должен признать, что она все еще затрудняет определение понятия "dt".
И будучи в состоянии сказать это:

если (строка["встреча"] имеет тип datetime АПТ &амп;&амп; кв == удалить)

Очень удобный.

BillWoodruff

Привет, я медленно попадаю "в зону" с новыми функциями, хотя мне приходится делать сознательные усилия, чтобы вспомнить их. Мне кажется интересным, что даже в последней версии VS 2019 Ent и с использованием последнего ReSharper: DGV.Источником данных является строка dt ... не помечается как предварительная компиляция.

OriginalGriff

Почему вы ожидаете, что это будет так? Источник данных-это объект, поэтому он может быть приведен к чему угодно во время компиляции, он только терпит неудачу во время выполнения.

BillWoodruff

Вы, конечно, правы. :) Но не кажется ли вам немного сумасшедшим, что компилятор знает типы для grid и table, и ни один из них никогда не может быть ничем иным, кроме "того, что они есть" ... и все же, вам может сойти с рук сравнение со строкой ?

OriginalGriff

Хотя на самом деле он не "знает" тип, вот в чем проблема. Фреймворк знает, с чем он может работать, но компилятор этого не делает, он просто работает с типом свойства как определено - object - и не настаивает на том, что это коллекция или DataReader. И технически, строка-это набор значений char. :смеяться:

BillWoodruff

И все же ... .. Держу пари, если бы вы увидели такой код: его безумие выскочило бы на вас, как гекконы могут прыгать, когда включен свет :)

OriginalGriff

О да! Но мы лучшие разработчики, чем компьютеры (или большинство QA-запросов, к сожалению).