Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridViewAutoFilter как оставить фильтр после апдейта / 8 сообщений из 8, страница 1 из 1
13.06.2016, 15:58
    #39255247
Yura1989
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Привет всем, использую на столбца фильтр с помощью DataGridViewAutoFilter, подскажите как сделать что бы после апдейта датагрида он не сбивался.
Чать кода
cn.Open();
BindingSource bsshift = new BindingSource();
DataSet dsshift = new DataSet();
DataTable dtshift = new DataTable();

dsshift.Tables.Add(dtshift);

SqlDataAdapter dashift = new SqlDataAdapter();
dashift = new SqlDataAdapter("запрос", cn);
dashift.Fill(dtshift);
bsshift.DataSource = dtshift;
gridShift.DataSource = bsshift;
cn.Close();

for (int i = 0; i < gridShift.RowCount; i++)
{
if (Convert.ToInt32(gridShift.Rows[i].Cells["planned"].Value) == 1)
gridShift.Rows[i].DefaultCellStyle.BackColor = Color.GreenYellow;

if (Convert.ToInt32(gridShift.Rows[i].Cells["ErrUpload"].Value) == 1)
gridShift.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}

DataGridViewColumn truck = gridShift.Columns["truck"];
truck.HeaderCell = new DataGridViewAutoFilterColumnHeaderCell(truck.HeaderCell);

DataGridViewColumn firstCity = gridShift.Columns["firstCity"];
firstCity.HeaderCell = new DataGridViewAutoFilterColumnHeaderCell(firstCity.HeaderCell);
...
Рейтинг: 0 / 0
14.06.2016, 00:28
    #39255387
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
...
Рейтинг: 0 / 0
14.06.2016, 12:03
    #39255578
Yura1989
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Shocker.Pro, спасибо, буду знать. Жаль по делу у вас нечего добавить.
...
Рейтинг: 0 / 0
14.06.2016, 21:35
    #39255995
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Yura1989,

Понимаете,такая штука. Вы описали, с излишними подробностями, как Вы используете малоизвестный контрол DataGridViewAutoFilter.

Я с ним никогда не работал, но так понял, что он делает "как в Экселе".

Эксель - не самый лучший инструмент для работы с базами. Свою слабость он компенсирует разными ухищренными фичами. Типа поиска по форматированию.


Несмотря на мое презрение к попыткам сделать "как в Экселе, Ворде, Скайпе, Фаре и т.д.", я, ака Капитан Очевидность, все же дам универсальный совет.

Сохраняйте состояние этого автофильтра перед апдейтом и восстанавливайте его после.

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

Ну и что , что Вы просто не дочитали доку по DataGridView до ее событий?
Всякие разного рода изменения лучше всего делать в событии CellPaint. В нем можно все! Если не нужно все, то есть немало других, хороших и важных событий. Например, RowPrepaint или CellFormatting. И множество других.


Поэтому я предлагаю Вам подумать, а нужен ли этот автофильтр? Может лучше сделать свою развитую систему поисков, сортировок и фильтров? У Сишарпа для этого есть прекрасные возможности.
...
Рейтинг: 0 / 0
14.06.2016, 21:44
    #39255997
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Ах да. Подумайте еще о том, что может не стоит тащить в клиента 100 тыщь строк и потом фильтровать их?
Лучше применять фильтры в запросах, что бы пользователь сразу получал то, что ему нужно.

Помните, что визуально юзер может надежно найти нужное ему не более чем в 100 строках. Оптимальный размер выборки - 100-300 строк. После этого надо стараться фильтровать на уровне запроса.

Наилучшая выборка - когда вернулось столько строк, сколько помещается на экране.
...
Рейтинг: 0 / 0
17.06.2016, 11:06
    #39257611
Yura1989
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Cat2,
Добрый день, очень благодарен Вам за ответ!
Cat2Сохраняйте состояние этого автофильтра перед апдейтом и восстанавливайте его после.
Вот это и хочу сделать, но не знаю как отловить на каком столбце фильтр и какое значение выбрано, хотя какое значение выбрано проще, можно просто смотреть на 0 индекс датагрида, а вот на каком столбце фильтр не знаю как споймать.

Cat2Лучше применять фильтры в запросах, что бы пользователь сразу получал то, что ему нужно.

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


На данный момент так и не смог решить как сохранить фильтр при помощи указанной мною библиотеки, налипил кучу дополнительных комбобоксов и все, так и живем.
...
Рейтинг: 0 / 0
17.06.2016, 11:12
    #39257620
Yura1989
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Cat2,

Cat2CellPaint

Буду очень благодарен, если покажите пример как использовать. Так как сделал я не правильно?
...
Рейтинг: 0 / 0
18.06.2016, 15:14
    #39258266
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridViewAutoFilter как оставить фильтр после апдейта
Yura1989пример как использовать.

Если в наименовании есть буква "е"

Код: c#
1.
2.
3.
4.
5.
6.
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            
            if (dgv.Rows[e.RowIndex].Cells["nameDataGridViewTextBoxColumn"].Value.ToString().Contains("е"))
                dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.BlanchedAlmond;
        }
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridViewAutoFilter как оставить фильтр после апдейта / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]