2012-12-06 40 views
0

我有一個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列與數據表列有相同的名稱,所以我不明白這是可能的。有任何想法嗎?

+0

代碼的上下文是什麼? 「我」是指某種形式還是某種東西? –

+0

而不是循環檢查點編號,循環遍歷列。 '作爲DataGridViewColumn在DataGridview.Columns ...'每個col ...' – prprcupofcoffee

+0

感謝大衛,這是非常有幫助的。我確實編輯了我原來的帖子,提出了另一個問題,提出了這種方法。 – J2Tuner

回答

1

移動線:

tabNewCheckpoint.Controls.Add(dgvNewCheckpoint) 

正下方:

tabctrlTimingTable.TabPages.Add(tabNewCheckpoint) 

解決了這個問題。

0

假設您知道如何隱藏DataGridView中的列,我將使用StartsWith()

+0

我認爲這將是最好的選擇。我編輯了原始帖子,告訴你我結束了什麼。 – J2Tuner

相關問題