Print Page | Close Window

Warnings vs. Errors

Printed From: IdeaBlade
Category: DevForce
Forum Name: DevForce Classic
Forum Discription: For .NET 2.0
URL: http://www.ideablade.com/forum/forum_posts.asp?TID=120
Printed Date: 26-Apr-2024 at 12:10am


Topic: Warnings vs. Errors
Posted By: naveen.menon
Subject: Warnings vs. Errors
Date Posted: 09-Jul-2007 at 12:55pm
I read somewhere about the ability to use warnings, instead of errors, in the verification piece. The Developer's guide (3.5.1) doesn't seem to address this. Could someone point me to the right resources where I can get some more information ragrding this?
 
Thanks,
 
Naveen



Replies:
Posted By: eileenv
Date Posted: 10-Jul-2007 at 12:21pm
The VerifierResultCollection contains information about all the results of a call to VerifierEngine.Execute including Errors, Warnings, and Oks. The question now becomes how to display warnings in the UI. Unlike errors, warnings are not thrown as exceptions and are, therefore, not caught by the UI, nor displayed with an error icon.
 
You can implement IDataErrorInfo in your app to display warnings as well as errors. But the problem now becomes the all-or-nothing nature of the IDataErrorInfo interface. The interface does not provide a convenient way of specifying other types of icons such as warning icons. If you don't care about the icon, then implementing IDataErrorInfo will display the warning message.
 
DevExpress, on the other hand, implements its own IDxDataErrorInfo with support for a warning icon, and it can be easily adapted to display results in VerifierResultCollection.
 
Note about IDataErrorInfo: As of DevForce 3.5.2.3, IDataErrorInfo is now being implemented in the abstract Entity class. A forthcoming release will give users the ability to override the implementation. For now, you will have to explicitly implement IDataErrorInfo in your app in order to override the base implementation.


Posted By: naveen.menon
Date Posted: 13-Jul-2007 at 6:15am
Thanks for the reply.
 
I'm a little confused with regard to the showing of the error icon.
 
Are you saying that even a warning should show up on the UI?
 
All our classes inherit from BaseEntity which implements IDataErrorInfo. The errors show up fine but the warnings don't show the error icon. I can catch the warnings from the VerfierResult collection just fine but the warnings don't show the icon on the UI.
 
Is this correct behaviour?
 


Posted By: eileenv
Date Posted: 13-Jul-2007 at 10:32am

The warning will not show up in the UI unless you explicitly display it. It will not show up automatically like errors do. This means you would have to iterate through the VerifierResultsCollection, pick out the warnings, and display it somehow in the UI.

How do you provide the error information in your implementation of IDataErrorInfo? If you are using a VeriferResultsCache as in the Verification Tutorial application (associated with the videos on website), you should notice that only errors are added to this cache. You would have to modify the VerifierResultsCache class (in C# example) to include Warnings in addition to the Errors. I have an example showing this if you are interested. 
 
Again, if you are supplying warnings to the IDataErrorInfo mechanism, it may not make sense to some people that a warning appears like an error (with the Error icon). It all depends on whether you want to treat warnings as errors. It would be nice if the IDataErrorInfo allowed you to specify other icons such as a warning icon.


Posted By: Yaron
Date Posted: 19-Nov-2007 at 12:07pm
You mention the DevEx implementation with regards to warnings, how can I adapt that approach with IB verification?


Posted By: eileenv
Date Posted: 19-Nov-2007 at 3:54pm

We get asked this question a lot. One of our customers was kind enough to send us the files he modified in order to support the use of DevEx controls and the use of the DevEx error provider which includes support for displaying warning as well as error icons. We have not yet incorporated these changes into our current set of Instructional Units, but I would be happy to send you the files as-is if you are interested. The code is currently written in VB.



Posted By: Yaron
Date Posted: 19-Nov-2007 at 9:23pm

At last, someone else is coding in VB.

can I have it please?


Posted By: Bernhard
Date Posted: 27-Nov-2007 at 5:41am
Hi!

is it possible to get the code as well?

Thank you!
Bernhard


Posted By: naveed_kharadi
Date Posted: 31-Jan-2008 at 12:15pm
Hi,

Can I have that code please?

Thanks and regards.


Posted By: eileenv
Date Posted: 31-Jan-2008 at 2:25pm
The following zip contains the sample code mentioned in this post. It was sent by a customer who was interested in integrating DevEx’s Error Provider mechanism with DevForce. It is written in VB and is provided as-is.
 
http://www.ideablade.com/forum/uploads/20080131_172404_WarningsvsError.zip - uploads/20080131_172404_WarningsvsError.zip
 
He also sent the following the comments about the code:

-----------------

I also attached my VB version of BaseEntity and supporting files as I use them (most of it, I converted from the C# tutotial) which works great.

Small mods include adjusting the VerifierCache to include Warnings.

One also needs to add references in the Model for DevExpress.XtraEditors, Data, Utils.

BaseEntity includes an implementation which simply converts the VerifierResultCode to a DevExpress.ErrorType which is crucial for correct Error Icons on the UI.

Private DXprovider As DXErrorProvider.DXErrorProvider

Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    DXprovider = New DXErrorProvider.DXErrorProvider()

    DXprovider.ContainerControl = Me

    DXprovider.DataSource = Me.MainBS

End Sub

-----------------

http://www.ideablade.com/forum/uploads/20080131_172105_WarningsvsError.zip -


Posted By: eileenv
Date Posted: 01-Feb-2008 at 12:15pm

A customer asked:

I did all the changes that were suggested and it seems to show the DevEx error provider as required. But what happens is, I now see BOTH the DevEx error provider and the .NET error provider. How do I remove the .NET error provider? 

Answer:

The following snippet shows you how you can gain access to a control’s ErrorProvider to change its properties, replace it entirely, or in this case, set it to null:

    private void InitializeForm() {
      ConfigureErrorProvider(mCityTextEdit, "City");
    }

    private void ConfigureErrorProvider(Control pControl, String pPropertyPath) {
      // For some Control pControl, retrieve its data bindings
      foreach (Binding aBinding in pControl.DataBindings) {
        // Cast the binding to an IdeaBladeBinding
        IdeaBladeBinding binding = aBinding as IdeaBladeBinding;
        if (binding != null && binding.BindingDescriptor.ViewDescriptor.Name == pPropertyPath) {
          binding.ErrorProvider = null;
        }
      }
    } 

 



Posted By: rclarke
Date Posted: 07-Feb-2008 at 12:46pm
I override the base IDataErrorInfo and return nothing for the implementations functions. This essentually tells .Net that no errors exist and the behavior implemented for DevEx will be invoked. Or you could add a compile switch to the CommonEntity class to include the implementation you desire. The following code snippet in how I do the overrides in BaseEntity.

#Region "IDataErrorInfo"

' Entity inherits from IDataErrorInfo as of DF 3.5.3

' providing virtual GetDataErrorInfo overloads for the implementation

' of the two IDataErrorInfo methods.

' This region re-implements the overloads to use the VerifierResultsCache

''' <summary>

''' Get error message for a particular triggering property.

''' </summary>

''' <param name="pPropertyName">Name of the property we're looking for.</param>

''' <returns>The first message found; null if no message found.</returns>

''' <remarks>

''' This implementation looks among the VerifierResults

''' for the "first" errant VerifierResult that could have been triggered by this property.

''' There could be many such results.

''' <para>

''' One could override to provide alternative messaging

''' such as line wrapping all of the property's VerifierResult messages.

''' </para>

''' </remarks>

Protected Overrides Function GetDataErrorInfo(ByVal pPropertyName As String) As String

'Since we are implementing the DevX error provider

'return nothing to the base indicating no error

'Return VerifierResultsCache.ToString(pPropertyName)

Return Nothing

End Function

''' <summary>Get error message for the object as a whole.</summary>

''' <remarks>

''' This implementation returns a string representation

''' of all errant VerifierResults of this object.

''' Could override to provide alternative messaging.

''' </remarks>

Protected Overrides Function GetDataErrorInfo() As String

'Since we are implementing the DevX error provider

'return nothing to the base indicating no error

'Return CType(VerifierResultsCache, Object).ToString()

Return Nothing

End Function




Print Page | Close Window