The filter works fine by itself, but it doesn’t update when switching records. First I tried having the filter update on AfterFieldChanged, but that did not update filter when switching between records. I’ve also tried the ValueChanged event on the actual drop down control.
Right now I have a combination of DataView_ListChanged and ValueChanged, it works sometimes, but once you have switched to a record more than once it stops updating.
We do this quite a lot, but ours is almost always on a row change in some EpiDataView rather than a field change as such. It seems to work reliably doing that. Stupid question, from what you’ve written, it reads as though you’re updating the dropdown based on values changing in the same field it’s bound to - presumably you are using the events on the field you want?
We do use the SearchFilter rather than the ColumnFilters, as well, and I suppose it’s possible that is more reliable to update.
Row change in EpidDataView seemed to work fine when actual changes were made, but it didn’t seem to fire when switching records with these controls at the top:
Combo1: Bound to UD40View.ShortChar03 and choices are from UD Code
Combo2: Bound to UD40View.ShortChar05, choices are from UD code, except filters so that UDCode.ShortChar01 = UD40View.ShortChar03
A server error occurred. Review the server event logs for details.
Exception caught in: Epicor.ServiceModel
Error Detail
Correlation ID: b57fa1ca-bcbf-4ea6-8822-f05fcdb4df59
Description: A server error occurred. Review the server event logs for details.
Program: Epicor.System.dll
Method: ProvideFault
Line Number: 34
Column Number: 17
Server Trace Stack: at Epicor.Hosting.Wcf.ErrorHandler.ProvideFault(Exception error, MessageVersion version, Message& fault) in C:_Releases\ICE\RL10.2.500.0FW\Source\Framework\Epicor.System\Hosting\Wcf\ErrorHandler.cs:line 34
at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideFault(Exception e, FaultConverter faultConverter, ErrorHandlerFaultInfo& faultInfo)
at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideMessageFaultCore(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage8(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.ProcessError(Exception e)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.SecurityChannelListener1.ReceiveItemAndVerifySecurityAsyncResult2.InnerTryReceiveCompletedCallback(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.Runtime.InputQueue1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue1.EnqueueAndDispatch(Item item, Boolean canDispatchOnThisThread)
at System.Runtime.InputQueue1.EnqueueAndDispatch(T item, Action dequeuedCallback, Boolean canDispatchOnThisThread) at System.ServiceModel.Channels.SingletonChannelAcceptor3.Enqueue(QueueItemType item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.CompleteParseAndEnqueue(IAsyncResult result)
at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.HandleParseIncomingMessage(IAsyncResult result)
at System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.HttpInput.ParseMessageAsyncResult.OnRead(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Web.Hosting.AsyncResultBase.Complete(Int32 hresult, Boolean synchronous)
at System.Web.Hosting.PipelineRuntime.AsyncCompletionHandler(IntPtr rootedObjectsPointer, Int32 bytesCompleted, Int32 hresult, IntPtr pAsyncCompletionContext)
Client Stack Trace
at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)
at Ice.Proxy.Lib.BOReaderImpl.GetRows(String serviceNamespace, String whereClause, String columnList)
at Ice.Lib.Framework.EpiCombo.getDataSet()
Support can’t seem to reproduce my error, would anyone be willing to test and see if they get an error?
Attached is a simple customization for UD20, with just two drop downs and no custom code. The Epifilters give me an error, but support doesn’t get the error. They do agree the filter does not work though.
I also attached the UDcodes in excel format, so you can add those to Epicor with the “Paste Insert” function.
With some secret help I have determined that the issue is the epifilter is looking for “ShortChar01” on the UDCodeType table and not the UDCodes table. Any idea how to work around this issue?
Ok, I stepped back and thought about what I was trying to achieve. I have a limited number of sub-categories, so I was able to achieve a similar effect by deleting the searchfilter on my second combo and setting the following properties: EpiFiltersParams:
HookShapeCol=?[ShortChar03] EpiFilters:
CodeTypeID=‘?{HookShapeCol}Throat’
This works great when the record is first opened. But it doesn’t update if ShortChar03 is changed or if another record is opened. It seems to only evaluate the filter once. Thus I am right back at square one were I started this post…
Is it expected that the filter wouldn’t automatically “refresh” every time the other field changes?