我有以下代码的用户清除datagridview列的单元格值。
For Each item As DataGridViewRow In dgvGeometricImport.Rows
item.Cells("Status1").Value = String.Empty
Next
我们是否有任何捷径可以清除所有值而无需迭代行?
我们可以使用linq来实现这个目标吗?
提前致谢
答案 0 :(得分:0)
使用它:
dataGridView.Rows.Cast(Of DataGridViewRow).ToList.ForEach(Sub(r) r.Cells("ColumnName").Value = String.Empty)
但是同样的事情,linq将进行迭代
答案 1 :(得分:0)
一种方法是使用jQuery选择器。它当然会迭代遍历行,但它将在客户端和幕后完成。
$('#' + gridViewCtlId + ' td:nth-child(' + INDEX_COLUMN_TO_CLEAR + ')').html('');
答案 2 :(得分:0)
无论是否设置DataSource
,您都可以*删除并重新添加列。
VB示例与 DataSource
设置:
Dim index As Integer = Me.dataGridView1.Columns("Status1").DisplayIndex
Dim table As DataTable = DirectCast(Me.dataGridView1.DataSource, DataTable)
Dim column As DataColumn = table.Columns("Status1")
table.Columns.Remove(column)
table.Columns.Add(column)
Me.dataGridView1.Columns("Status1").DisplayIndex = index
VB示例没有 DataSource
设置:
Dim index As Integer = Me.dataGridView1.Columns("Status1").Index
Dim column As DataGridViewColumn = Me.dataGridView1.Columns("Status1")
Me.dataGridView1.Columns.Remove(column)
Me.dataGridView1.Columns.Insert(index, column)
*免责声明:这会有效,但如果我是诚实的,我无法肯定地说某些地方没有发生迭代水平。毕竟,当您重新添加列时,它将成为每个行条目的一部分,因此可以通过引擎盖进行迭代。