To reproduce:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.RadGridView1.DataSource = Me.ProductsBindingSource
Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products)
Dim obj As New ConditionalFormattingObject("MyCondition", ConditionTypes.Greater, "30", "", False)
obj.CellBackColor = Color.SkyBlue
obj.CellForeColor = Color.Red
obj.TextAlignment = ContentAlignment.MiddleRight
Me.RadGridView1.Columns("UnitPrice").ConditionalFormattingObjectList.Add(obj)
End Sub
Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
Dim mySQL As String = "SELECT * FROM Products where ProductName = 'Chaii'"
Dim myTable As DataTable = getDataInTable(mySQL, My.Settings.NwindConnectionString)
Me.RadGridView1.DataSource = myTable
End Sub
Public Shared Function getDataInTable(mySQLorTable As String, myConnectionString As String, Optional myTimeout As Integer = 30) As DataTable
Using myConnection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Nwind.mdb")
Dim myCommand As New OleDb.OleDbCommand(mySQLorTable, myConnection)
myConnection.Open()
Dim myDataTable As New DataTable
Dim myAdapter As New OleDb.OleDbDataAdapter(myCommand)
myAdapter.Fill(myDataTable)
Return myDataTable
End Using
End Function
When you click the button, the grid is refilled with the query result which does not contain any rows. As a result, a DataException is thrown for each column: "There is no property descriptor corresponding to property name: 'ColumnName'" .
Workaround: clear the conditional formatting objects, reset the DataSource and add the conditional formatting objects back