我正在使用DataGrid显示/编辑数据。我想允许用户编辑多行,尽管其中一些可能有验证错误。现在,如果某行有验证错误,我不能编辑其他行。我看到了一个解决方案,我需要使用反射来获取DataGrid的一些属性。有没有更好,更干净的方法来做到这一点?如何在获取某个单元格中的某个验证错误后在datagrid中编辑行
2
A
回答
4
你可以定制你datagrid
并覆盖其OnCanExecuteBeginEdit
事件是这样的:
protected override void OnCanExecuteBeginEdit(System.Windows.Input.CanExecuteRoutedEventArgs e)
{
var hasCellValidationError = false;
var hasRowValidationError = false;
const BindingFlags bindingFlags =
BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance;
//Current cell
var cellErrorInfo = this.GetType().BaseType.GetProperty("HasCellValidationError", bindingFlags);
//Grid row
var rowErrorInfo = this.GetType().BaseType.GetProperty("HasRowValidationError", bindingFlags);
if (cellErrorInfo != null) hasCellValidationError = (bool) cellErrorInfo.GetValue(this, null);
if (rowErrorInfo != null) hasRowValidationError = (bool) rowErrorInfo.GetValue(this, null);
base.OnCanExecuteBeginEdit(e);
if ((!e.CanExecute && hasCellValidationError) || (!e.CanExecute && hasRowValidationError))
{
e.CanExecute = true;
e.Handled = true;
}
}
它检查datagrid
有验证错误,然后将其e.CanExecute = true
,这样你就可以在键入另一个细胞。
0
添加CellEditEnding属性的DataGrid
CellEditEnding="DataGridCellEditEnding"
private void DataGridCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
e.Cancel = true;
}
相关问题
- 1. Silverlight DataGrid - 验证新行时没有编辑单个单元格
- 2. 如何在JQGrid的行编辑中禁用某些单元格的编辑?
- 3. wpf datagrid在单个单元格中更新全行编辑
- 4. DataGrid在单元格编辑后刷新
- 5. Qt/C++:在QTableView的某个单元格中获取数据
- 6. DataGrid:单元验证错误其他行单元不可编辑/只读
- 7. 如何在发生验证错误时取消Silverlight DataGrid中的编辑?
- 8. 在fullcalender中禁用某个单元格
- 9. 如何从具有某个类的表行中获取单元格值?
- 10. 更改验证错误行为后Datagrid单元格背景错误
- 11. iPhone:某些UITableView的单元格在编辑中显示为空
- 12. 在NSArray中编辑单个单元格
- 13. 如何验证某个元素是否存在于NSMutubleArray中
- 14. 在单元格编辑器中调用某个操作后,单元格不会更新
- 15. 在编辑时在表格中验证单元格
- 16. 在某个点后输出列中的单元格的数组
- 17. 从Datagrid中的当前编辑单元格获取文本
- 18. 在单元格编辑器中获取extjs中的行数据
- 19. 如何获取DataGrid中刚刚编辑的单元格的行和单元格的索引
- 20. 如何在我的GridView中编辑单元格(如果某些要求为真)
- 21. 如何在sqlserver中的单个单元格中获取多个单元格值
- 22. 在“Paint”函数中获取数据网格中某行单元格的值?
- 23. 如何获取有关DataGrid中验证错误的信息
- 24. 一个Excel宏,如果某个单元格中存在某些值,它将删除行,然后连接?
- 25. 使用C#,如何从编辑的行中获取一个单元格文本?
- 26. 如何在django模板中获取某个字段的表单?
- 27. 如何在编辑行时获取jqgrid单元格值?
- 28. 使TinyMCE只在某一行后编辑
- 29. 熊猫:在某个单词后获取行内容
- 30. 如何在jqGrid中编辑单元格?
是的,它的作品!但是,UI逻辑仍然是越野车。例如。如果我的datagrid具有'CanUserAddRows =“True”'。步骤如下:在空行中输入无效值以添加新项目,按Enter,转到某个先前存在的行,输入无效值,按Enter,按Escape,在最近添加的行中输入有效值,按Enter。修正先前存在的行中的错误。这样做我会得到所有有效的行并且没有空行来添加新项目。 – 2016-06-05 16:24:31