Hi,
I am having problems with using MultiComboboxes in GridView while using the filter bar.
Normal editing is ok after I have handled the RadGridView1_CellEditorInitialized event
If I click on the filter bar column and then select a value it throws this error:
the InnerException shows a System.NullReferenceException so I tried to force the filter value by handling the editor_TextChanged event, the code runs but the error is still thrown, code below:
If I select filters on other columns that are not MultiComboboxes they work without error.
I only have 2 columns in the grid that use multicomboboxes, the ValueMember and DisplayMember values are as follows:
Column 1 "POST"
ValueMember = "pkPostID" underlaying value datatype is Integer32
DisplayMember = "tPostUPN" underlaying value datatype is String
Column 2 "Employee"
ValueMember = "pkEmployeeID" underlaying value datatype is Integer32
DisplayMember = "lEmployeeNumber" underlaying value datatype is Integer32
the data is types and values are the same in the GridViewMultiComboBoxColumn elements.
Any help/ideas would be most welcome.
Thanks
Wayne Steel
I am having problems with using MultiComboboxes in GridView while using the filter bar.
Normal editing is ok after I have handled the RadGridView1_CellEditorInitialized event
If I click on the filter bar column and then select a value it throws this error:
System.Reflection.TargetInvocationException was unhandled Message=Exception has been thrown by the target of an invocation. Source=mscorlib StackTrace: at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Delegate.DynamicInvokeImpl(Object[] args) at System.Delegate.DynamicInvoke(Object[] args) at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme) at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme) at System.Windows.Forms.Control.InvokeMarshaledCallbacks() at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at Telerik.WinControls.RadControl.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(ApplicationContext context) at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine) at RMS.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81 InnerException: System.NullReferenceException Message=Object reference not set to an instance of an object. Source=Telerik.WinControls.GridView StackTrace: at Telerik.WinControls.UI.ScrollableRowsContainerElement.RemoveElement(Int32 position) at Telerik.WinControls.UI.BaseVirtualizedContainer`1.MeasureElements() at Telerik.WinControls.UI.BaseVirtualizedContainer`1.MeasureOverride(SizeF availableSize) at Telerik.WinControls.UI.ScrollableRowsContainerElement.MeasureOverride(SizeF availableSize) at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize) at Telerik.WinControls.RadElement.Measure(SizeF availableSize) at Telerik.WinControls.UI.RowsContainerElement.MeasureOverride(SizeF availableSize) at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize) at Telerik.WinControls.RadElement.Measure(SizeF availableSize) at Telerik.WinControls.UI.ScrollViewElement`1.MeasureView(SizeF availableSize) at Telerik.WinControls.UI.ScrollViewElement`1.MeasureOverride(SizeF availableSize) at Telerik.WinControls.UI.GridTableElement.MeasureOverride(SizeF availableSize) at Telerik.WinControls.RadElement.MeasureCore(SizeF availableSize) at Telerik.WinControls.RadElement.Measure(SizeF availableSize) at Telerik.WinControls.Layouts.ContextLayoutManager.UpdateLayout() at Telerik.WinControls.Layouts.ContextLayoutManager.UpdateLayoutCallback(ILayoutManager manager) InnerException: the InnerException shows a System.NullReferenceException so I tried to force the filter value by handling the editor_TextChanged event, the code runs but the error is still thrown, code below:
Private Sub RadGridView1_CellEditorInitialized(sender As Object, e As Telerik.WinControls.UI.GridViewCellEventArgs) Handles RadGridView1.CellEditorInitialized Try Dim editor As Telerik.WinControls.UI.RadMultiColumnComboBoxElement = TryCast(e.ActiveEditor, Telerik.WinControls.UI.RadMultiColumnComboBoxElement) If editor IsNot Nothing AndAlso editor.Columns IsNot Nothing Then With editor If .ValueMember = "pkPostID" Then .Columns("pkPostID").IsVisible = False .Columns("tPostUPN").HeaderText = "UPN" .Columns("tJobTitleName").HeaderText = "Job Title" .Columns("dtPostStart").HeaderText = "Start Date" .Columns("dtPostEnd").HeaderText = "End Date" ElseIf .ValueMember = "pkEmployeeID" Then .Columns("pkEmployeeID").IsVisible = False .Columns("lEmployeeNumber").HeaderText = "Emp Num" .Columns("tEmployeeFirstName").HeaderText = "First Name" .Columns("tEmployeeLastName").HeaderText = "Last Name" End If .AutoSizeDropDownToBestFit = True .AutoFilter = True RemoveHandler editor.TextChanged, AddressOf editor_TextChanged AddHandler editor.TextChanged, AddressOf editor_TextChanged End With End If Catch ex As Exception Call MessageBox.Show(ex.Message) End TryEnd SubPrivate Sub editor_TextChanged(sender As Object, e As System.EventArgs) Try Dim editor As Telerik.WinControls.UI.RadMultiColumnComboBoxElement = DirectCast(Me.RadGridView1.ActiveEditor, Telerik.WinControls.UI.RadMultiColumnComboBoxElement) With editor If .ValueMember = "pkPostID" Then With .EditorControl With .MasterTemplate.FilterDescriptors .Remove("filterUPN") .Add("filterUPN", Telerik.WinControls.Data.FilterOperator.IsEqualTo, editor.Value) End With .TableElement.Update(Telerik.WinControls.UI.GridUINotifyAction.FilteringChanged) End With ElseIf .ValueMember = "pkEmployeeID" Then With .EditorControl With .MasterTemplate.FilterDescriptors .Remove("filterEmpNum") .Add("filterEmpNum", Telerik.WinControls.Data.FilterOperator.IsEqualTo, editor.Value) End With .TableElement.Update(Telerik.WinControls.UI.GridUINotifyAction.FilteringChanged) End With End If End With Catch ex As Exception Call MessageBox.Show(ex.Message) End TryEnd SubIf I select filters on other columns that are not MultiComboboxes they work without error.
I only have 2 columns in the grid that use multicomboboxes, the ValueMember and DisplayMember values are as follows:
Column 1 "POST"
ValueMember = "pkPostID" underlaying value datatype is Integer32
DisplayMember = "tPostUPN" underlaying value datatype is String
Column 2 "Employee"
ValueMember = "pkEmployeeID" underlaying value datatype is Integer32
DisplayMember = "lEmployeeNumber" underlaying value datatype is Integer32
the data is types and values are the same in the GridViewMultiComboBoxColumn elements.
Any help/ideas would be most welcome.
Thanks
Wayne Steel