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

Problem with selectionstate of a specific filter column

2 Answers 86 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Frank Schürer
Top achievements
Rank 1
Frank Schürer asked on 23 Sep 2010, 03:47 PM
Hi,

i am currently implementing a custom filter dropdown with radgridview, but i get confused with the following problem.

For simplification just imagine i have two columns, Status and Status2.
Status is just a representation of 0 or 1. Status2 is an image representing the status.

If i click the filter symbol inside of the TableFilteringRow my custom dropdown will be opened.
After choosing an option a handler fires and the filter is being applied to the column "Status".
That works as i would expect it.

But if i try that the second time, my custom dropdown shows up, i choose another option,
the handler fires but the filter symbol seems to be still pressed. And that is the reason why the data inside the gridview cannot be filtered because the filter action is not yet finished until i click into another column/row.

See also the attached image for better understanding what i mean.

Here is the code:
Private Sub grdViewPostleitregion_ContextMenuOpening(ByVal sender As System.Object, ByVal e As Telerik.WinControls.UI.ContextMenuOpeningEventArgs) Handles grdViewPostleitregion.ContextMenuOpening
        If (e.ContextMenuProvider Is Nothing) Then
 
            e.ContextMenu.Items.Clear()
 
            Dim dtMenu As New RadDropDownMenu
 
            Dim r As RadMenuItem
            Dim sepItm As RadMenuSeparatorItem
 
            'No Filter
            r = New RadMenuItem
            r.Text = "No Filter"
            dtMenu.Items.Add(r)
            AddHandler r.Click, AddressOf PostRegionNoFilter_Click
            'Separator
            sepItm = New RadMenuSeparatorItem
            e.ContextMenu.Items.Add(sepItm)
 
            'Imagefilter
            r = New RadMenuItem
            r.Image = My.Resources.Status_0
            r.Text = "OK"
            dtMenu.Items.Add(r)
            AddHandler r.Click, AddressOf PostRegionStatus0_Click
 
            r = New RadMenuItem
            r.Image = My.Resources.Status_1
            r.Text = "Warning"
            dtMenu.Items.Add(r)
            AddHandler r.Click, AddressOf PostRegionStatus1_Click
 
            e.ContextMenu = dtMenu
 
        End If
    End Sub
 
    Private Sub NoFilter_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        With Me.grdViewPostleitregion
            .Columns("Status").FilterDescriptor = Nothing
 
            .CurrentColumn = .Columns("Status")
            .CurrentRow = .MasterView.TableFilteringRow
        End With
    End Sub
 
    Private Sub Status0_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim Filter As New FilterDescriptor()
 
        Filter.Operator = FilterOperator.IsEqualTo
        Filter.Value = 0
        Filter.IsFilterEditor = False
        With Me.grdViewPostleitregion
 
            .Columns("Status").FilterDescriptor = Nothing
            .Columns("Status").FilterDescriptor = Filter
 
            .CurrentColumn = .Columns("Status")
            .CurrentRow = .MasterView.TableFilteringRow
 
            .MasterView.TableFilteringRow.Cells(0).IsSelected = True
 
        End With
    End Sub
 
    Private Sub Status1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim Filter As New FilterDescriptor()
 
        Filter.Operator = FilterOperator.IsEqualTo
        Filter.Value = 1
        Filter.IsFilterEditor = False
 
        With Me.grdViewPostleitregion
 
            .Columns("Status").FilterDescriptor = Filter
            .CurrentColumn = .Columns("Status")
            .CurrentRow = .MasterView.TableFilteringRow
 
            .MasterView.TableFilteringRow.Cells(0).IsSelected = True
        End With
    End Sub

How can i fix that?

2 Answers, 1 is accepted

Sort by
0
Emanuel Varga
Top achievements
Rank 1
answered on 23 Sep 2010, 09:10 PM
Hello Frank,

I would like to ask you what version of telerik controls are you using, because i've tried your code (modified it to C# ) and i couldn't reproduce the problem you've been talking about, please try to update to the latest version and try this code and after that let me know if you still have this problem.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            radGridView1.EnableFiltering = true;
            radGridView1.ContextMenuOpening += radGridView1_ContextMenuOpening;
            radGridView1.DataSource = new TestsCollection();
        }
 
        private void radGridView1_ContextMenuOpening(System.Object sender, Telerik.WinControls.UI.ContextMenuOpeningEventArgs e)
        {
            if (e.ContextMenuProvider == null)
            {
                e.ContextMenu.Items.Clear();
 
                RadDropDownMenu dtMenu = new RadDropDownMenu();
 
                RadMenuItem r = default(RadMenuItem);
                RadMenuSeparatorItem sepItm = default(RadMenuSeparatorItem);
 
                //No Filter
                r = new RadMenuItem();
                r.Text = "No Filter";
                dtMenu.Items.Add(r);
                r.Click += NoFilter_Click;
                //Separator
                sepItm = new RadMenuSeparatorItem();
                e.ContextMenu.Items.Add(sepItm);
 
                //Imagefilter
                r = new RadMenuItem();
                r.Text = "OK";
                dtMenu.Items.Add(r);
                r.Click += Status0_Click;
 
                r = new RadMenuItem();
                r.Text = "Warning";
                dtMenu.Items.Add(r);
                r.Click += Status1_Click;
 
                e.ContextMenu = dtMenu;
            }
        }
 
        private void NoFilter_Click(object sender, System.EventArgs e)
        {
            {
                this.radGridView1.Columns["Status"].FilterDescriptor = null;
 
                this.radGridView1.CurrentColumn = this.radGridView1.Columns["Status"];
                this.radGridView1.CurrentRow = this.radGridView1.MasterView.TableFilteringRow;
            }
        }
 
        private void Status0_Click(object sender, System.EventArgs e)
        {
            FilterDescriptor Filter = new FilterDescriptor();
 
            Filter.Operator = FilterOperator.IsEqualTo;
            Filter.Value = 0;
            Filter.IsFilterEditor = false;
            {
                this.radGridView1.Columns["Status"].FilterDescriptor = null;
                this.radGridView1.Columns["Status"].FilterDescriptor = Filter;
 
                this.radGridView1.CurrentColumn = this.radGridView1.Columns["Status"];
                this.radGridView1.CurrentRow = this.radGridView1.MasterView.TableFilteringRow;
 
                this.radGridView1.MasterView.TableFilteringRow.Cells[0].IsSelected = true;
            }
        }
 
        private void Status1_Click(object sender, System.EventArgs e)
        {
            FilterDescriptor Filter = new FilterDescriptor();
 
            Filter.Operator = FilterOperator.IsEqualTo;
            Filter.Value = 1;
            Filter.IsFilterEditor = false;
 
            {
                this.radGridView1.Columns["Status"].FilterDescriptor = Filter;
                this.radGridView1.CurrentColumn = this.radGridView1.Columns["Status"];
                this.radGridView1.CurrentRow = this.radGridView1.MasterView.TableFilteringRow;
 
                this.radGridView1.MasterView.TableFilteringRow.Cells[0].IsSelected = true;
            }
        }
    }
 
    public class Test
    {
        public int Id { get; set; }
 
        public int Status { get; set; }
    }
 
    public class TestsCollection : BindingList<Test>
    {
        public TestsCollection()
        {
            for (int i = 0; i < 10; i++)
            {
                this.Add(new Test { Id = i, Status = i % 2 == 0 ? 0 : 1 });
            }
        }
    }

Best Regards,
Emanuel Varga
0
Martin Vasilev
Telerik team
answered on 28 Sep 2010, 03:05 PM
Hi Frank,

Thank you for your code.

Just like Emanuel, I am unable to reproduce the described issue with a custom filter menu. I have tested the case with a code snippet similar to yours and everything seems to work as expected on my side.

Could you please open a new support ticket and send us a small sample project? This will help to investigate your particular scenario further and provide you with accurate assistance.

Greetings,
Martin Vasilev
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
GridView
Asked by
Frank Schürer
Top achievements
Rank 1
Answers by
Emanuel Varga
Top achievements
Rank 1
Martin Vasilev
Telerik team
Share this question
or