来爱清 发表于 2015-4-3 22:41:00

回复 10楼Alice的帖子

您好,按照您给的提示,我在CommitedRowEdit事件里用代码将e.Row.Errors属性值去了重复信息,但是页面效果却没有发生任何变化,请问这是为什么?
代码和界面效果截图如下:


Alice 发表于 2015-4-7 09:29:00

回复 11楼来爱清的帖子

在CommittedEdit和CommittedRowEdit事件里都会进行校验。我看你在CommittedRowEdit事件里对Error进行了处理。这个时候会更新Error。
但如果你又由于进入编辑状态等操作导致CommitedEdit事件触发的话,就会再次校验,并且Error会更新。

因此两个事件都要处理。

来爱清 发表于 2015-4-7 14:05:00

回复 12楼Alice的帖子

您好,我在CommitedEdit事件里加了处理后结果不变。然后为了排除其它干扰,我在几个事件里都加上一句话,只做清除Error的操作,可还是没有任何效果,行头的错误提示仍有15条,重复了8条,我觉得很奇怪,可否帮忙看下为什么?我的代码如下:
private void BoardInfoGrid_OnCommittedEdit(object sender, DataGridCellEventArgs e)
      {
            e.Cell.Row.Errors.Clear();
      }

      private void BoardInfoGrid_OnCommittedRowEdit(object sender, DataGridRowEventArgs e)
      {
            e.Row.Errors.Clear();

      }

       private void BoardInfoGrid_OnCommittingEdit(object sender, DataGridEndingEditEventArgs e)
      {
            e.Row.Errors.Clear();
      }
      private void BoardInfoGrid_OnCommittingRowEdit(object sender, DataGridEditingRowEventArgs e)
      {
            e.Row.Errors.Clear();
      }

      private void BoardInfoGrid_OnCommittingNewRow(object sender, DataGridEndingNewRowEventArgs e)
      {
            e.NewRow.Errors.Clear();
      }

      private void BoardInfoGrid_OnCommittedNewRow(object sender, DataGridRowEventArgs e)
      {
            e.Row.Errors.Clear();
      }

来爱清 发表于 2015-4-7 14:51:00

回复 12楼Alice的帖子

求大神帮帮忙啊,这个问题已经困扰我们项目组好多天了,一直未能解决,挺着急的。另外,我在C1本身给的Demo里在DataInput Validation 页面后台用CommittedEdit和CommittedRowEdit两个事件里调用Errors.Clear()方法去试了下,也是一样无法清除行头的Error的。代码截图如下:

Alice 发表于 2015-4-7 15:26:00

回复 14楼来爱清的帖子

你的问题无法重现。
测试步骤:
1.打开随机安装Demo,路径:
\Documents\ComponentOne Samples\Studio for WPF\C1.WPF.DataGrid\CS\DataGridSamples\DataInput\Validation
2.在Validation.xaml.cs添加代码如下:
public Validation()
      {
            InitializeComponent();

            DataContext = GetProducts();
         
            grid.CommittedEdit += grid_CommittedEdit;
            grid.CommittedRowEdit += grid_CommittedRowEdit;

      }

      void grid_CommittedRowEdit(object sender, C1.WPF.DataGrid.DataGridRowEventArgs e)
      {
            e.Row.Errors.Clear();
      }

      void grid_CommittedEdit(object sender, DataGridCellEventArgs e)
      {
            e.Cell.Row.Errors.Clear();
      }
3.运行程序。打开Validation界面。
4.选择第一行,Name列的文字,删除掉,然后离开编辑状态。结果如图:



如果操作步骤有所不同,请指出。

来爱清 发表于 2015-4-7 16:04:00

回复 15楼Alice的帖子

您好。我这边断点进入方法看了,代码里调试时,清空前确实有错误,执行了清空操作后,代码里的Error没了,但页面上行头错误提示仍在,如截图:





我的问题可能是出在哪呢?

Alice 发表于 2015-4-7 17:25:00

回复 16楼来爱清的帖子

我尝试按照你的写法,将CommittedEdit和CommittedRowEdit事件写在XAML里,就重现了你的问题。

按照我在15楼的方法调用就是好的。

来爱清 发表于 2015-4-7 19:33:00

回复 17楼Alice的帖子

哦,那什么原因你知道吗?为什么事件写在XAML里面就不行了呢?

Alice 发表于 2015-4-8 10:04:00

回复 18楼来爱清的帖子

XAML和C#调用事件肯定是有区别的。
这是由WPF机制和.NET机制不同引起的。
但就详细的区别,很抱歉,我也不太清楚。

来爱清 发表于 2015-4-8 16:00:00

回复 19楼Alice的帖子

您好。我把代码改成按照你15楼的方式在cs文件里面订阅事件,这样在编辑行里确实可以清空Error了。
但是,在新增一行时,双击新行的第一个单元格进行编辑,但不填数据,然后将焦点移到上一行以提交刚刚编辑的新行,Error提示未消失,我要的效果是要让其消失。
我在cs里加了CommittingNewRow和CommittedNewRow事件,也一样不行,请问该怎么解决?




页: 1 [2] 3
查看完整版本: C1DataGrid DataInput Validation 行头验证提示重复