Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
164
How I can add combobox in ultragrid columns header and select items from it?
posted

Hello!

I have a little skills in Infragistics components and controls, and I have a problem...

I need add combobox at the ultragrid column header.

I do this:

1. I'm create new class, which implements IUIElementCreationFilter interface

public void AfterCreateChildElements(UIElement parent)

 {

if (parent is HeaderUIElement) 

{                 

HeaderBase aHeader = ((HeaderUIElement)parent).Header;

 

if (aHeader.Caption == "Money")

{

TextUIElement aTextUIElement;  

                    EditorWithComboUIElement aComboBoxUIElement = (EditorWithComboUIElement)parent.GetDescendant(typeof(EditorWithComboUIElement));                       

 

                    UltraGridComboEditorOwner embeddableEditor = null;

                    EditorWithCombo editor = null;

                    UltraCombo combo = null;

                    if (aComboBoxUIElement == null)

                    {

                        combo = new UltraCombo();                         

                        embeddableEditor = new UltraGridComboEditorOwner(combo);                        

                        editor = new EditorWithCombo();

                        aComboBoxUIElement = new EditorWithComboUIElement(parent, embeddableEditor, editor, null, true, true, true, true);                        

                    }

                    else

                    {

                        combo = aComboBoxUIElement.Owner.GetControl(null) as UltraCombo;

                        embeddableEditor = aComboBoxUIElement.Owner as UltraGridComboEditorOwner;

                        editor = aComboBoxUIElement.Editor as EditorWithCombo;

                    }                    

 

                    combo.DataSource = _courses;

                    combo.DisplayMember = "VchCode";

                    combo.ValueMember = "Vcode";

                    combo.SelectedRow = combo.Rows[0];                    

 

aTextUIElement = (TextUIElement)parent.GetDescendant(typeof(TextUIElement));

                    if (aTextUIElement == null)

                    {

                        return;

                    }

                    ColumnHeader aColumnHeader =                     (ColumnHeader)aComboBoxUIElement.GetAncestor(typeof(HeaderUIElement)).GetContext(typeof(Infragistics.Win.UltraWinGrid.ColumnHeader));

                    aComboBoxUIElement.Editor.ValueChanged += new EventHandler(Editor_ValueChanged);

parent.ChildElements.Add(aComboBoxUIElement);

                    aComboBoxUIElement.Rect = new Rectangle(parent.Rect.X + 3, parent.Rect.Y + (parent.Rect.Height - aComboBoxUIElement.Owner.GetControl(null).Height) - 3, parent.Rect.Width - 6, aComboBoxUIElement.Owner.GetControl(null).Height);

                    aTextUIElement.Rect = new Rectangle(aTextUIElement.Rect.X, aTextUIElement.Rect.Y + 2, aTextUIElement.Rect.Width, 18);     // 18 - height of aTextUIElement.Rect... it's bad code...                   

 

                    // In this case, i dont't know how i can widen columns header, if it height less than sum                           // of aComboBoxUIElement and aTextUIElement height...

                    if (aHeader.Height <= aComboBoxUIElement.Rect.Height + aTextUIElement.Rect.Height)

                    {

                        aHeader.Band.ColHeaderLines = aHeader.Band.ColHeaderLines + 1;

                    }

}

else

{

                    EditorWithComboUIElement aCheckBoxUIElement = (EditorWithComboUIElement)parent.GetDescendant(typeof(EditorWithComboUIElement));

 

if(aCheckBoxUIElement != null)

{

parent.ChildElements.Remove(aCheckBoxUIElement);

aCheckBoxUIElement.Dispose();

}

}                

}            

        }

        public bool BeforeCreateChildElements(UIElement parent)

        {

            return false;                        

        }

 

In result execution this code, combobox is created, but i can't select items from combobox.

Combobox in header has items, but it behaviour like readonly

P.S.: Sorry for my poor English...