过滤导致 RowFormatting 不正确的数据 radgridview - C#
Filtering Data causing the RowFormatting to be incorrect radgridview - C#
我有一个 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 中显示的数据。任何人都可以找出导致过滤器清除和行格式错误的问题的原因吗?
我需要添加一个 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);
}
我有一个 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 中显示的数据。任何人都可以找出导致过滤器清除和行格式错误的问题的原因吗?
我需要添加一个 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);
}