我有一个 Windows 形式的基础设施超网格控件。外面有一个“添加新”按钮,可以将新行插入到网格中。
我面临的问题是,当我单击网格外的按钮时,当我在网格内编辑一个单元格时,该单元格不会失去焦点。因此,已编辑的新值不会更新为其基础数据源。
我需要这个单元格失去焦点并更新它的基础数据源,因为“添加新”按钮会创建一个新行,该特定列的默认值是根据前一行的编辑值计算得出的。
那么关于如何使超网格单元失焦的任何想法?这种情况也可能适用于普通的 GridView。
我有一个 Windows 形式的基础设施超网格控件。外面有一个“添加新”按钮,可以将新行插入到网格中。
我面临的问题是,当我单击网格外的按钮时,当我在网格内编辑一个单元格时,该单元格不会失去焦点。因此,已编辑的新值不会更新为其基础数据源。
我需要这个单元格失去焦点并更新它的基础数据源,因为“添加新”按钮会创建一个新行,该特定列的默认值是根据前一行的编辑值计算得出的。
那么关于如何使超网格单元失焦的任何想法?这种情况也可能适用于普通的 GridView。
如果您的按钮位于工具栏上,那么您看到的行为是预期的,因为工具栏没有获得焦点。如果在执行逻辑之前是这种情况,您可以使用网格的PerformAction方法并传入 UltraGridAction.CommitRow 以强制正在编辑的行提交其更新。
例如:
this.ultraGrid1.PerformAction(UltraGridAction.CommitRow);
我用myUltraGrid.ActiveRow.Cells[0].Activate();
了也可以。但我猜@alhalama 的解决方案更好。