1、今天开发的时候碰到一个问题,使用var rows = $("#a").datagrid("getSelections");获取选中的datagrid数据行时,无论选取了多少行,返回结果都是只有一行。
而且如果选取了多行,然后取消其中一行,返回结果将为0.
查询了相关资料,了解到以下结果:
datagrid("getSelections")获取选中行是根据所选行的idField进行区分的,即如果idField是不变的话,无论选取多少行,返回的结果都只有一行。
查询了项目代码之后,发现果然是idField出了问题,原本的groupId变成了groupid,所以idField不再是从数据库中获取的唯一标识符groupId而是一个垃圾值groupid。
将其改过来之后即可。
另外需要注意,如果需要判断选取结果是0的情况,即if(rows.length == 0 || rows == null),那么在这之前不能使用类似name = rows[0].name之类的语句进行取值。否则当没有选取rows时,无法执行该if语句中的代码。在使用中,需要在该if语句中加上一句return false; 然后将name = rows[0].name之类的语句放在该if代码块之后执行。
2、后台SQL查询问题
说来也很惭愧,犯了一个很基础的问题。
因为需要使用的SQL语句比较长,所以在代码中对其进行了换行,即:
</pre><pre name="code" class="java">String sql = "select * from table1 t1"
+ "left join table2 t2"
+ "on t1.xx = t2.xx";开始我写的代码就是和这个比较类似的,然后程序报错,查看错误信息,发现是查询语句的问题。一看,原来因为在换行的时候没有考虑到字符串连接时没有空格的问题,导致SQL语句出错。
更改为如下代码即可:
String sql = "select * from table1 t1 "
+ "left join table2 t2 "
+ "on t1.xx = t2.xx";同时还遇到的问题是sql语句执行失败。
查找原因,发现是EntityManager中createNativeQuery和createQuery的问题。
createNativeQuery用于SQL语句查询,createQuery语句用于JPQL语句查询。
SQL语句使用createQuery的话会报unexcept token的错误,使用createNativeQuery就可以了。
createNativeQuery之后使用getResultList即可得到返回的查询结果列表了。
本文讲述了在使用easyui的datagrid时遇到的getSelections方法返回异常问题,原因是idField配置错误。修复后,还讨论了如何正确判断并处理未选中行的情况。另外,文章提到了在后台SQL查询中由于换行导致的语法错误,并介绍了EntityManager的createNativeQuery和createQuery的区别,强调了在使用SQL查询时应使用createNativeQuery。
7450

被折叠的 条评论
为什么被折叠?



