Javascript 验证Dojo Datagrid是否至少有一行

Javascript 验证Dojo Datagrid是否至少有一行,javascript,validation,dojo,dojox.grid,Javascript,Validation,Dojo,Dojox.grid,我有一个Dojo表单,我正在使用验证。对于我的常规字段和验证,一切都很好。我的表单包含一个最初为空的DataGrid,用户可以添加行。我希望表单验证检查表中是否至少有一行。表中字段的验证工作正常,但我需要确保它们至少添加了一行 我尝试了类似的方法,但没有成功(即,在验证表单的其余部分时没有调用该函数): 你试过这样的吗 if(this.yourformname.validate()&& this.grid.get('rowCount')>0){ //do your stuf

我有一个Dojo表单,我正在使用验证。对于我的常规字段和验证,一切都很好。我的表单包含一个最初为空的DataGrid,用户可以添加行。我希望表单验证检查表中是否至少有一行。表中字段的验证工作正常,但我需要确保它们至少添加了一行

我尝试了类似的方法,但没有成功(即,在验证表单的其余部分时没有调用该函数):


你试过这样的吗

if(this.yourformname.validate()&& this.grid.get('rowCount')>0){
//do your stuff
}else{
alert("either form is missing data or grid has no rows");
}

下面是检查数据网格行数的方法

注意-我不知道您在项目中使用的dojo版本,但是
dojo 1.6
为行计数提供了直接属性,即
dataGridObject.rowCount

工作代码-

JSFiddle-


希望这对您有所帮助:)

我刚刚编写了这个JSFIDLE,我认为它实现了您想要的:

首先,您需要做的是将网格包装在dijit/form/form中。然后,使用
dojo/\u base/declare
创建一个新的网格,该网格扩展自
DataGrid
\u FormMixin
。在小提琴的第37行

dijit/form/_FormMixin在这里起着重要作用:它将使网格继承一些函数,包括
validate()
isValid()
,这些函数可以被覆盖以进行验证。当您调用
表单.validate()
时,网格现在也将被验证。在我的示例中,您可以看到,无论何时提交和验证表单,都会显示一个带有行数的警报。此警报在网格中的
validate()
函数中编码


我希望这会有帮助

您是否尝试过创建validate()函数而不是validator?我尝试过添加.validate()和.isValid()(到DataGrid小部件),但什么都没有发生(例如,表单验证时我的代码没有执行)。这就是你的意思吗?我用的是Dojo1.10。我知道如何检查行数,我的问题是如何将行数检查集成到dojo中验证的标准模式中,即当我调用form.validate()时,我希望DataGrid在没有行的情况下进行投诉(就像我的其他小部件在强制且未输入数据的情况下进行投诉一样).我试图避免这种方法(特别是通知方面,即我希望以一致的方式传达验证问题-dojo使用红色着色和工具提示进行验证),但我将称此计划为B。如果我在未来一两天内没有(或想出)任何更好的方案,我将接受这个答案。为什么不设置边界(红色)在这种情况下跨网格?这样用户就知道网格是空的。或者您可以使用css样式更改“noDataMessage”属性。您的JSFIDLE确实达到了我的要求。谢谢!很遗憾,我将不得不整理通知部分(即,如何告诉用户他们需要添加一行)我自己,但我可以解决这个问题。我在应用你的方法时遇到了一些问题,因为我的表单不是用代码创建的(不高兴的是,
DataGrid
没有
containerNode
),但我做了一些返工,现在一切都正常了。
if(this.yourformname.validate()&& this.grid.get('rowCount')>0){
//do your stuff
}else{
alert("either form is missing data or grid has no rows");
}