Hello,
I need to highlight a set of required fields in detailview either by changing the color of the Caption or append a colored * to the caption.
I started with the below sample but without any luck, can you providea working sample
Private Sub View_ControlsCreated(ByVal sender As Object, ByVal e As EventArgs)
Dim pInfoArray As PropertyInfo() = Me.View.ObjectTypeInfo.Type.GetProperties
For i As Integer = 0 To pInfoArray.Length - 1
Dim attr As RuleRequiredFieldAttribute = DirectCast(Attribute.GetCustomAttribute(pInfoArray(i), GetType(RuleRequiredFieldAttribute)), RuleRequiredFieldAttribute)
If attr IsNot Nothing Then
DirectCast(DirectCast(View, DetailView).FindItem(pInfoArray(i).Name).Control, DevExpress.ExpressApp.Web.TableEx).BackColor = System.Drawing.Color.Red
End If
Next
End Sub
We have closed this ticket because another page addresses its subject:
Validation - Introduce an immediate visualization for properties, which are marked with the RuleRequiredValue attribute (BackgroundColor, Border or Icon)Highlight required field in detailview
Answers
Hello Pete,
Can you please provide me with your sample, because it's difficult to find what's wrong with your code without debugging it?
In any case, I see that you are trying to set the BackColor of the TableEx control. I don't think that this is the best way to do what you want.
It's better to process ASPxPropertyEdititor objects only (FindItem(name) as ASPxPropertyEditor) and then set the color of their Editor object.
Alternatively, you can use the approach I used in the How to highlight the focused editor in DetailView example, to process ASPxWebControl objects only (check out the HighlightFocusedLayoutItemDetailViewController class for more details).
I suggest you implement one of these approaches in your sample and attach it here if it doesn't work. Then I could help you further.
See Also:
http://documentation.devexpress.com/#Xaf/CustomDocument2729
Update
Here is a C# example for version 14.1.6:
C#public class ViewController1 : ObjectViewController<DetailView, Contact> {
protected override void OnActivated() {
base.OnActivated();
((WebLayoutManager)View.LayoutManager).ItemCreated += ViewController1_ItemCreated;
}
void ViewController1_ItemCreated(object sender, ItemCreatedEventArgs e) {
PropertyEditor editor = e.ViewItem as PropertyEditor;
if (editor != null && editor.PropertyName == "FirstName") {
((LayoutItemTemplateContainer)e.TemplateContainer).Caption = "Some custom text1";
if (e.TemplateContainer.CaptionControl != null) {
CustomizeCaptionControl(e.TemplateContainer.CaptionControl);
} else {
e.TemplateContainer.Load += TemplateContainer_Load;
}
}
}
void TemplateContainer_Load(object sender, EventArgs e) {
LayoutItemTemplateContainerBase templateControler = (LayoutItemTemplateContainerBase)sender;
templateControler.Load -= TemplateContainer_Load;
CustomizeCaptionControl(templateControler.CaptionControl);
}
private void CustomizeCaptionControl(WebControl captionControl) {
captionControl.BackColor = Color.Red;
}
protected override void OnDeactivated() {
base.OnDeactivated();
((WebLayoutManager)View.LayoutManager).ItemCreated -= ViewController1_ItemCreated;
}
}
Thanks,
Dennis
There is a similar event in WinForms - WinLayoutManager.ItemCreated. Handle it in the same manner as shown in the example and customize layout items of the required properties.
In addition, we have an example of how to show error icons near required properties - Validation - How to highlight invalid properties when the View is shown.