过滤导致RowFormatting不正确的数据radgridview - C#

时间:2018-02-19 11:09:25

标签: c# filter radgrid radgridview

我有一个RadGridView,它显示订单上的产品和数量列表等。如果满足某些条件,我会格栅化网格中的行以变为红色。这在加载数据时应该正常工作。但是,我有一个文本字段,用于过滤按键上的数据。

当数据被过滤时,RowFormatting保持原样,当过滤器一次删除一个字符时,它会将随机行格式化为红色。应用多个过滤器然后删除后,所有行都是红色的。

 void radGridView1_RowFormatting(object sender, RowFormattingEventArgs e)
    {
        radGridView1.Columns["Description"].Width = 300;

        try
        {
            if (e.RowElement.RowInfo.Cells["PT Physical"].Value != null && e.RowElement.RowInfo.Cells["On Order"].Value != null)
            {
                if (Convert.ToInt32(e.RowElement.RowInfo.Cells["On Order"].Value) > (Convert.ToInt32(e.RowElement.RowInfo.Cells["PT Physical"].Value)))
                {
                    e.RowElement.DrawFill = true;
                    e.RowElement.NumberOfColors = 1;
                    e.RowElement.ForeColor = Color.Red;
                    e.RowElement.Font = new Font("Segoe UI", 8, FontStyle.Bold);
                }
            }
        }
        catch (Exception ex)
        {

        }
    }

以上是我的RowFormatting功能。

 private void txt_search_TextChanged_1(object sender, EventArgs e)
    {
        try
        {
            Console.WriteLine(txt_search.Text);
            CompositeFilterDescriptor searchFilter = new CompositeFilterDescriptor();
            searchFilter.FilterDescriptors.Add(new FilterDescriptor("product", FilterOperator.Contains, txt_search.Text));
            this.radGridView1.EnableFiltering = true;
            this.radGridView1.MasterTemplate.EnableFiltering = true;
            this.radGridView1.MasterTemplate.ShowFilteringRow = false;
            this.radGridView1.MasterTemplate.ShowFilteringRow = false;
            this.radGridView1.MasterTemplate.ShowFilterCellOperatorText = false;
            this.radGridView1.MasterTemplate.FilterDescriptors.Remove("product");

            if (txt_search.Text != "")
            {
                this.radGridView1.MasterTemplate.FilterDescriptors.Add(searchFilter);
            }

        }
        catch (Exception ex)
        {

            MessageBox.Show("Something went wrong searching the grid. Please try again and contact I.T. if this problem persists. \n\n " + ex.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

上面是我的文本更改事件,它过滤了RGV中显示的数据。任何人都可以发现导致过滤器清除和行格式错误的问题吗?

1 个答案:

答案 0 :(得分:0)

我需要添加一个else语句来解决这个问题。

else
{
   e.RowElement.DrawFill = true;
   e.RowElement.NumberOfColors = 1;
   e.RowElement.ForeColor = Color.Black;
   e.RowElement.Font = new Font("Segoe UI", 8, FontStyle.Regular);
}