C# 防止gridview在验证失败时失去焦点
我在表单上有一个Telerik radGridView,它实现了单元格和行验证。没问题,效果很好 当我留下一行不完整,然后单击表单其他地方的Save按钮时,问题就出现了。下面的RowValidating代码段不起作用,因为一旦焦点从gridview移到Save按钮,if(row!=null)总是false,并且RowValidating代码永远不会执行C# 防止gridview在验证失败时失去焦点,c#,winforms,gridview,telerik,C#,Winforms,Gridview,Telerik,我在表单上有一个Telerik radGridView,它实现了单元格和行验证。没问题,效果很好 当我留下一行不完整,然后单击表单其他地方的Save按钮时,问题就出现了。下面的RowValidating代码段不起作用,因为一旦焦点从gridview移到Save按钮,if(row!=null)总是false,并且RowValidating代码永远不会执行 private void radGridView1_RowValidating(object sender, RowValidatingEve
private void radGridView1_RowValidating(object sender, RowValidatingEventArgs e)
{
var row = e.Row as GridViewDataRowInfo;
if (row != null)
{
var value = row.Cells["cboUnit"].Value.ToString();
if (string.IsNullOrEmpty(value))
{
e.Cancel = true;
row.ErrorText = "Unit Number is a required field";
}
else
{
row.ErrorText = string.Empty;
}
如何在网格中保持焦点,以确保在允许用户离开网格并保存之前整个网格都已验证?请尝试同时给出这两个条件
private void radGridView1_RowValidating(object sender, RowValidatingEventArgs e)
{
var row = e.Row as GridViewDataRowInfo;
var value = row.Cells["cboUnit"].Value.ToString();
if (string.IsNullOrEmpty(value) && row != null)
{
e.Cancel = true;
row.ErrorText = "Unit Number is a required field";
}
else
{
row.ErrorText = string.Empty;
}
我还没有尝试过这些代码,但希望这能有所帮助 我不熟悉Telerik控件,但我知道标准的
DataGridView
仅在CurrentRow
更改时触发RowValidating
事件。如果网格整体失去焦点,但CurrentRow
保持不变,我相信您必须自己触发验证(例如调用Form.ValidateChildren()
方法)。我将尝试其他方法触发验证-Form.ValidateChilden()无论网格的条件是什么,都返回true。您也可以尝试Form.Validate()
。如果所有其他操作都失败,您可以尝试设置grid.CurrentCell=null
,这将引发InvalidOperationException
。谢谢。但是这种方法的问题是,如果值==if(string.IsNullOrEmpty(value)…),代码就会失败null@PeterJ因此,请给出Or运算符,而不是AND(&&)。这里我使用And运算符。而不是给出| |,这样它可以检查两个条件,如果其中任何一个条件都失败,它仍然会工作。问题是,当row==null返回true时,string.IsNullOrEmpty也会自动为true,因此代码永远不会执行。我想我可能忽略了一些愚蠢的事情,但在尝试了几乎所有可以想象的选项排列两天后,我仍然被卡住了!