datagridviewコントロールのデータソースであるデータテーブルにデータを入力するSQLServerデータベースがあります。次の文字列で始まるdatagridviewコントロールのすべての列を非表示にします。
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ループを処理していないことがわかります。これは何が原因でしょうか?
ありがとう
わかりました、今私は変更しました:
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列の名前はdatatable列と同じであるため、これがどのように可能かわかりません。何か案は?