我有一个SQL Server数据库,用于填充数据表,它是datagridview控件的数据源。我想隐藏datagridview控件中以字符串开头的所有列:如何通过列名以字符串开头的字符串来搜索SQL Server数据库中的列?
strColumnName = "Checkpoint " & intCheckpointNumber
我该怎么做?我正在使用VB2010。
在哪里我已经结束了,这显然是行不通的是以下几点:
Do While intCheckpoint < intTotalCheckPoints
If Me.datagridview.Columns ' I cannot figure out how to insert something along the lines of Name.StartsWith(strColumnName)' Then
'Hide this column with something along the lines of 'Me.datagridview.Columns(strColumnName).Visible = False
End If
intCheckPoint += 1
Loop
我无法弄清楚如何隐藏基于什么他们的名字开头的列。
感谢
好吧,我已经修改了我的代码,并结束了以下内容:
Try
Do
If m_DataTable.Columns.Contains("Checkpoint " & intCheckPointNumber & " Time") Then
Dim tabNewCheckpoint As New TabPage
Dim dgvNewCheckpoint As New DataGridView
tabNewCheckpoint.Name = "tabCheckpoint" & intCheckPointNumber
tabNewCheckpoint.Text = "Checkpoint " & intCheckPointNumber
tabctrlTimingTable.TabPages.Add(tabNewCheckpoint)
dgvNewCheckpoint.Name = "dgvCheckpoint" & intCheckPointNumber
dgvNewCheckpoint.DataSource = m_DataTable
dgvNewCheckpoint.Size = dgvTimingP2P.Size
tabNewCheckpoint.Controls.Add(dgvNewCheckpoint)
strColumnName = "Checkpoint " & intCheckPointNumber
For Each col As DataGridViewColumn In dgvNewCheckpoint.Columns
MessageBox.Show(col.Name)
If col.Name.StartsWith("Checkpoint") Then
If Not col.Name.StartsWith(strColumnName) Then
col.Visible = False
End If
End If
Next
Else
Exit Do
End If
intCheckPointNumber += 1
Loop
Catch ex As Exception
'MessageBox.Show(ErrorToString)
End Try
,我现在的问题是,该栏目还没有隐藏。如果我在程序中插入停止,我可以看到代码甚至没有处理For ... Next Loop。什么会造成这种情况?
感谢
好了,现在我已经改变了:
For Each col As DataGridViewColumn In dgvNewCheckpoint.Columns
MessageBox.Show(col.Name)
If col.Name.StartsWith("Checkpoint") Then
If Not col.Name.StartsWith(strColumnName) Then
col.Visible = False
End If
End If
Next
要:
For Each col As DataColumn In m_DataTable.Columns
MessageBox.Show(col.ColumnName)
If col.ColumnName.StartsWith("Checkpoint") Then
If Not col.ColumnName.StartsWith(strColumnName) Then
dgvNewCheckpoint.Columns(col.ColumnName).Visible = False
End If
End If
Next
,它给我一个错误:“对象引用不设置到对象的实例“但datagridview列与数据表列有相同的名称,所以我不明白这是可能的。有任何想法吗?
代码的上下文是什么? “我”是指某种形式还是某种东西? –
而不是循环检查点编号,循环遍历列。 '作为DataGridViewColumn在DataGridview.Columns ...'每个col ...' – prprcupofcoffee
感谢大卫,这是非常有帮助的。我确实编辑了我原来的帖子,提出了另一个问题,提出了这种方法。 – J2Tuner