Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView Row Visible = false / 15 сообщений из 15, страница 1 из 1
06.04.2010, 20:30
    #36564409
demo_user
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
Как можно сделать что бы в гриде rows сделать инвизибле.
Хочу сделать так.
DataGridViewBand band = grids.Rows[rowindex];
band.Visible = false;

Но выдает ошибку
Строку, связанную с положением CurrencyManager, нельзя сделать невидимой.

Грид создаю обычным путем.
grids = new DataGridView();
grids.RowHeadersVisible = false;
grids.AllowUserToAddRows = false;
grids.AllowUserToDeleteRows = false;
ds = new DataSet();
da = new SqlDataAdapter();
bs = new BindingSource();
da.SelectCommand = GenerateSqlCommand(conn);
da.Fill(ds,"table");
bs.DataSource = ds.Tables["table"];
grids.DataSource = bs;
this.Controls.Add(grids);
Как можно исправить?!
...
Рейтинг: 0 / 0
06.04.2010, 21:21
    #36564476
MikeKat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
Например, можно удалить строку в ds.Tables["table"]
...
Рейтинг: 0 / 0
06.04.2010, 21:28
    #36564492
MikeKat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
Ещё можно создать дополнительный столбец в дататэйбл и по нему фильтровать данные.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.05.2013, 17:12
    #38260739
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
пардон за некропостинг, но сам помучался, авось кому поможет

Код: c#
1.
2.
3.
4.
5.
6.
7.
CurrencyManager cManager =
                band.BindingContext[band .DataSource, band.DataMember]
                as CurrencyManager;

cManager.SuspendBinding();     
--говнокодим--
cManager.ResumeBinding();
...
Рейтинг: 0 / 0
16.05.2013, 18:23
    #38260880
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
Вклинюсь в чужую тему.
Есть набор колонок, одна из них - checkbox. Как сделать, чтобы в пустой строке не отображался этот контрол
...
Рейтинг: 0 / 0
16.05.2013, 19:22
    #38260963
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
FullKettle,

Так отработает?

Код: c#
1.
2.
3.
4.
5.
foreach(DataGridViewRow r in dgv.rows)
{
if (r.cell[индекс колонки по которой определяется "пустота" строки]=="")
   r.cell[индекс колонки чекбокса] = new = new DataGridViewTextBoxCell();
} 
...
Рейтинг: 0 / 0
16.05.2013, 19:23
    #38260964
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
один "= new" лишний
...
Рейтинг: 0 / 0
17.05.2013, 11:04
    #38261548
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
ALOTEFullKettle,

Так отработает?

Код: c#
1.
2.
3.
4.
5.
foreach(DataGridViewRow r in dgv.rows)
{
if (r.cell[индекс колонки по которой определяется "пустота" строки]=="")
   r.cell[индекс колонки чекбокса] = new = new DataGridViewTextBoxCell();
} 


Это не совсем то. Мне не надо менять тип ячейки.
Когда строка совсем пустая, в ней отображаются checkbox, а мне не надо чтобы они отображались.
Когда строка в фокусе, тогда нужно чтобы они появлялись.
Хотя можно сделать сначала тип TexBox с пустым значением, а когда в "фокусе" - установить обратно на checkbox. Может есть возможность просто скрыть их?
...
Рейтинг: 0 / 0
17.05.2013, 11:25
    #38261597
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
FullKettle,
А как Вы скроете ячейку из таблицы? Атрибут visible у ячейки readonly. Что на ее месте отображать? Черные пиксели? А если на ее месте отображать пустую ячейку, то это DataGridViewTextBoxCell и есть. Я, лично, самым очевидным путем вижу изменение типа ячейки по необходимости.
Как вариант можно свой класс написать, наследуемый от DataGridViewComboBoxCell.
...
Рейтинг: 0 / 0
17.05.2013, 11:45
    #38261637
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
ALOTEFullKettle,
А как Вы скроете ячейку из таблицы? Атрибут visible у ячейки readonly. Что на ее месте отображать? Черные пиксели? А если на ее месте отображать пустую ячейку, то это DataGridViewTextBoxCell и есть. Я, лично, самым очевидным путем вижу изменение типа ячейки по необходимости.
Как вариант можно свой класс написать, наследуемый от DataGridViewComboBoxCell.
Может попробовать отталкиваться от этого варианта:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
private void Tab_CellClick(object sender, DataGridViewCellEventArgs e)
{
            Tab.AllowUserToAddRows = false;
}

private void Tab_Click(object sender, EventArgs e)
{
            Tab.AllowUserToAddRows = true;
}
...
Рейтинг: 0 / 0
17.05.2013, 12:01
    #38261668
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
FullKettle
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
private void Tab_CellClick(object sender, DataGridViewCellEventArgs e)
{
            Tab.AllowUserToAddRows = false;
}

private void Tab_Click(object sender, EventArgs e)
{
            Tab.AllowUserToAddRows = true;
}


Никогда так не пробовал (да и необходимости не возникало), и что, реально перестает отображаться ячейка как чекбокс?
...
Рейтинг: 0 / 0
17.05.2013, 12:06
    #38261679
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
ALOTEFullKettle
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
private void Tab_CellClick(object sender, DataGridViewCellEventArgs e)
{
            Tab.AllowUserToAddRows = false;
}

private void Tab_Click(object sender, EventArgs e)
{
            Tab.AllowUserToAddRows = true;
}


Никогда так не пробовал (да и необходимости не возникало), и что, реально перестает отображаться ячейка как чекбокс?
Не знаю как правильно сказать ))) Не прорисовывается в строке, которая "готовиться" к заполнению. Только вот условия надо добавить и события может другие подобрать. Мне надо было не все чекбоксы скрыть, а именно на добавляемой строке
...
Рейтинг: 0 / 0
17.05.2013, 12:36
    #38261742
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
а
Код: c#
1.
currentRow.Tab.AllowUserToAddRows = false;


не работает?
...
Рейтинг: 0 / 0
17.05.2013, 12:53
    #38261787
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
FullKettleALOTEFullKettle,

Так отработает?

Код: c#
1.
2.
3.
4.
5.
foreach(DataGridViewRow r in dgv.rows)
{
if (r.cell[индекс колонки по которой определяется "пустота" строки]=="")
   r.cell[индекс колонки чекбокса] = new = new DataGridViewTextBoxCell();
} 


Это не совсем то. Мне не надо менять тип ячейки.
Когда строка совсем пустая, в ней отображаются checkbox, а мне не надо чтобы они отображались.
Когда строка в фокусе, тогда нужно чтобы они появлялись.
Хотя можно сделать сначала тип TexBox с пустым значением, а когда в "фокусе" - установить обратно на checkbox. Может есть возможность просто скрыть их?Думаю это делается переопределением стандартной отрисовки.
...
Рейтинг: 0 / 0
17.05.2013, 12:56
    #38261795
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridView Row Visible = false
ALOTEа
Код: c#
1.
currentRow.Tab.AllowUserToAddRows = false;


не работает?
Таких свойств нет
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView Row Visible = false / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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