This is a migrated thread and some comments may be shown as answers.

Conditional Format Dialog

6 Answers 144 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Maarten
Top achievements
Rank 1
Maarten asked on 24 Aug 2012, 02:44 PM
Hi all,

Is it possible to make a column invisible in the conditional formatting dialog. We have some primary key fields which are hidden (IsVisible = False + IsVisibleInColumnChooser = False), but still i see the columns in the conditional formatting dialog.

Any ideas?

Maarten

6 Answers, 1 is accepted

Sort by
0
Jack
Telerik team
answered on 29 Aug 2012, 09:52 AM
Hello Maarten,

Thank you for writing.

Yes, this can be done by using a customized conditional formatting form. In order to customize the form you should replace the default header cell in RadGridView:
void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
{
    if (e.CellType == typeof(GridHeaderCellElement))
    {
        e.CellType = typeof(CustomHeaderCell);
    }
}
 
public class CustomHeaderCell : GridHeaderCellElement
{
    public CustomHeaderCell(GridViewColumn column, GridRowElement row)
        : base(column, row)
    {
    }
 
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(GridHeaderCellElement);
        }
    }
 
    protected override ConditionalFormattingForm CreateConditionalFormattingForm()
    {
        return new CustomConditionalFormattingForm(this.GridControl, this.ViewTemplate,
                                                this.ColumnInfo as GridViewDataColumn, this.ElementTree.ThemeName);
    }
}

And here is the code for the customized conditional formatting form:
public class CustomConditionalFormattingForm : ConditionalFormattingForm
{
    public CustomConditionalFormattingForm(RadGridView radGridView, GridViewTemplate template, GridViewDataColumn column, string themeName)
        : base(radGridView, template, column, themeName)
    {
    }
 
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
 
        RadDropDownList list = (RadDropDownList)this.Controls["radComboBoxColumns"];
        for (int i = list.Items.Count-1; i>=0; i--)
        {
            RadListDataItem item = list.Items[i];
            GridViewColumn column = (GridViewColumn)item.Value;
            if (column.Name == "ID")
            {
                list.Items.RemoveAt(i);
            }
        }
    }
}

I hope this helps.
 
Kind regards,
Jack
the Telerik team
RadControls for WinForms Q2'12 release is now live! Check out what's new or download a free trial >>
0
Maarten
Top achievements
Rank 1
answered on 29 Aug 2012, 01:52 PM
Hi Jack,

Once again thx for the reply!

I just tried to implement your code snippet. But it seems the version I'm using for "Telerik.WinControls.UI, 2012.2.726.40" has no protected method "CreateConditionalFormattingForm"...

Since not all columns which we want to hide are ID columns I also think we are going to use the following:
if (!column.IsVisible && !column.VisibleInColumnChooser)
{
    list.Items.RemoveAt(i);
}
0
Jack
Telerik team
answered on 30 Aug 2012, 12:18 PM
Hi Maarten,

I apologize. I used the internal development version of RadControls for WinForms to create the sample. This method will be available in our upcoming Q3 release in October. Currently, it is not possible to replace the default conditional formatting form in RadGridView. I hope this time frame is OK for you.

Should you have other questions, do not hesitate to ask.
 
Kind regards,
Jack
the Telerik team
RadControls for WinForms Q2'12 release is now live! Check out what's new or download a free trial >>
0
Maarten
Top achievements
Rank 1
answered on 30 Aug 2012, 12:41 PM
Hi Jack,

No problem. We will wait for the upcoming Q3 release.

Greetings,
Maarten
0
Wesley
Top achievements
Rank 1
answered on 08 Nov 2012, 10:38 AM
Hi,
I'm a colleague of Maarten and I tried the solution.
It worked but I wrote a custom formatting form that is a little different:
public class CustomTelerikConditionalFormattingForm : ConditionalFormattingForm
{
        public CustomTelerikConditionalFormattingForm(RadGridView radGridView, GridViewTemplate template, GridViewDataColumn column, string themeName)
            : base(radGridView, template, column, themeName)
        {
        }
 
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
  
            var columnDropDownList = (RadDropDownList)Controls["radComboBoxColumns"];
 
            for (var i = columnDropDownList.Items.Count-1; i>=0; i--)
            {
                RadListDataItem item = columnDropDownList.Items[i];
                var column = (GridViewColumn)item.Value;
 
                if (!column.IsVisible || !column.VisibleInColumnChooser)
                {
                    columnDropDownList.Items.RemoveAt(i);
                }
            }
        }
    }

Problem solved.
Thanks!
0
Jack
Telerik team
answered on 12 Nov 2012, 01:26 PM
Hello Wesley,

I am glad to hear that you have found a solution for this issue. Thank you for sharing it with the community. 

If you have further questions, do not hesitate to contact us.
 
Regards,
Jack
the Telerik team
Q3’12 of RadControls for WinForms is available for download (see what's new). Get it today.
Tags
GridView
Asked by
Maarten
Top achievements
Rank 1
Answers by
Jack
Telerik team
Maarten
Top achievements
Rank 1
Wesley
Top achievements
Rank 1
Share this question
or