我有一个Datagridview
ValidationError: 2 validation errors
name
'name' must be str, not int (type=type_error)
name
'name' must be str, not int (type=type_error)
但是现在我只想隐藏“ Drink3”,其余的保持不变。
我只知道如何隐藏/删除行和列,但不确定单个单元格是否可能。如果是,我应该在这里申请什么?我正在考虑一个datagridview事件,但找不到它。
结果应如下所示。
1 Drink1 Beef1
2 Drink2 Beef2
3 Drink3 Beef3
答案 0 :(得分:0)
您可以在后端代码中更改单元格的样式,可以将单元格的String值更改为""
。
答案 1 :(得分:0)
如果只不想显示该值,则可以清除它。您现在Cell
是只读的,您可以直接更改Visible
。
dataGridView1.Rows[Your Row].Cells[Your Col].Value = null;
如果您需要单元格数据,则可以通过Data Table
来实现。
答案 2 :(得分:0)
您可以清除该值-但也会从链接的数据源中删除它。
其他方法是设置该单元格的位置:
cell.CellStyle.ForeColor = cell.CellStyle.BackColor
cell.CellStyle.SelectionForeColor = cell.CellStyle.SelectionBackColor
因此使数据不可见。
但是在这种情况下,用户仍然可以复制并粘贴值,因此您必须从整个DataGridView
禁用复制值或拦截复制事件,并且如果用户正在从“禁止”单元格复制,则只需取消活动。
答案 3 :(得分:0)
尽管您可能会将结果隐藏为未处理的内容,例如修改前色和底色,但我不建议这样做。在某些情况下(例如,高亮显示的内容),它可能会变得可见。
如果将内容加载到DataGridView
之后不需要使用内容,则可以直接在数据查询(SQL,LINQ)或DataTable
中删除内容。< / p>
如果在加载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