如何以编程方式触发RowEditEnded为网格

时间:2017-03-16 15:48:04

标签: c# wpf

嗨我有两个控件存在。第一个是名为Disbursal的Datepicker。第二个是具有多列的网格,但唯一重要的列是日期列。

此时验证的工作原理是,如果我在网格中移动日期,如果在发布日期之前,则会在RowEditEnded上进行验证检查。

我现在也想反过来。如果更改了发布日期,我希望触发网格中存在的每一行的验证。

所以我的问题是,在Disbursal Datepicker选择更改后,如何遍历行并让每行进入编辑和结束编辑,以便触发验证。

this.RadGridView1.RowEditEnded += this.radGridView_RowEditEnded;
this.RadGridView1.BeginningEdit += this.radGridView_BeginningEdit;

private void radGridView_BeginningEdit(object sender, GridViewBeginningEditRoutedEventArgs e)
{
    ((ScriptDTO)e.Cell.DataContext).ClearErrors();
}

private void radGridView_RowEditEnded(object sender, GridViewRowEditEndedEventArgs e)
{
    if (e.EditAction == GridViewEditAction.Commit)
    {
        ScriptDTO editedPerson = e.Row.DataContext as ScriptDTO;
        if (editedPerson.Date <= DisbursalDatePicker.SelectedDate)
        {
            editedPerson.SetError("Date", "Must be after disbursal");
        }
        else
        {
            editedPerson.ClearErrors();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以遍历Items的{​​{1}}集合中的项目:

RadGridView

不要费心尝试以编程方式提升实际的private void DisbursalDatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { foreach (ScriptDTO person in RadGridView1.Items.OfType<ScriptDTO>()) { if (person.Date <= DisbursalDatePicker.SelectedDate) { person.SetError("Date", "Must be after disbursal"); } else { person.ClearErrors(); } } } 事件。