Как скрыть данные определенной ячейки в DataGridView - PullRequest
0 голосов
/ 11 июля 2019

У меня есть Datagridview

1    Drink1    Beef1
2    Drink2    Beef2
3    Drink3    Beef3

Но теперь я хочу скрыть только "Drink3", а остальные остаются прежними.

Я знаю только, как скрыть / удалить строки и столбцы, но не уверен, возможно ли это для отдельной ячейки.Если это так, что я должен подать заявку здесь?Я думаю о событии просмотра данных, но просто не могу найти, что это такое.

Результат должен выглядеть следующим образом.

1    Drink1    Beef1
2    Drink2    Beef2
3              Beef3

Ответы [ 4 ]

0 голосов
/ 11 июля 2019

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

Если вам не нужно работать с контентом после его загрузки в DataGridView, вы можете стеретьсодержимое непосредственно в запросе данных (SQL, LINQ) или в DataTable.

Если вам нужно работать с содержимым во время выполнения после загрузки DataGridView, чем источник клонирования DataTable, скрытьсодержание и представить этот новый.Можно найти больше способов применения этого принципа.

C #

DataTable dt;
dt = ds.table(0);

for (var ir = 0; ir <= dt.Rows.Count - 1; ir++)
{
    DataRow dr = dt.Rows(ir);   
    if (CStr(dr("MyColumn")) = "Drink3")
    {
        dr("MyColumn") = " ";
    }
}
this.DataGridView1.DataSource = dt;

VB:

Dim dt As DataTable
dt = ds.table(0)

For ir = 0 To dt.Rows.Count - 1
    Dim dr As DataRow = dt.Rows(ir)
    If CStr(dr("MyColumn")) = "Drink3" Then
        dr("MyColumn") = " "
    End If
Next
Me.DataGridView1.DataSource = dt
0 голосов
/ 11 июля 2019

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

dataGridView1.Rows[Your Row].Cells[Your Col].Value = null;

Если вам нужны данные ячейки, вы можете получить их из Data Table.

0 голосов
/ 11 июля 2019

Вы можете очистить значение - но вы также удалите его из связанного источника данных.


Другой способ сделать это - установить ячейку:

  • cell.CellStyle.ForeColor = cell.CellStyle.BackColor
  • cell.CellStyle.SelectionForeColor = cell.CellStyle.SelectionBackColor

Таким образом, делая данные невидимыми.

Но в этом случае пользователь все еще может скопировать и вставить значение, поэтому вам придется отключить копирование значений из этого DataGridView как целого или перехватить событие копирования, и если пользователь копирует из «запрещенной» ячейки, просто отмените событие.

0 голосов
/ 11 июля 2019

Вы можете изменить стиль ячейки в бэкэнд-коде, вы можете изменить значение String ячейки на "".

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