1.datagrid排序

如何设置datagrid参数支持列排序,请查看 相关文章,这里不做过多介绍。

我使用的方式是在需要排序的字段上加上sortable=“true”

<th field="ftotal" width="50" sortable="true">总计</th>

这样当点击列头进行排序时,后台就会传递参数:

然后后台接收参数,拼接到sql语句中执行就可以了。

我遇到的问题时,数据库持久层使用的是mybatis,数据库字段使用了下划线命名方式,例如user_name,create_date等,为了在代码里面便于阅读,使用了骆驼峰的命名方式,当然这个操作是mybatis_genetator完成的。那么datagrid显示的时候,就是这样的

<th field="userName" width="50" sortable="true">用户名</th>
<th field="createDate" width="50" sortable="true">创建时间</th>

点击列名排序时,传递的参数就变成了,userName、createDate,显然与数据库里面的字段不一致。

思路一:

使用Java代码将骆驼峰的字段变为下划线命名方式,如果字段映射规则很标准,很准确。例如:userName=>user_name,但是mybatis生成实体是允许使用columnOverride将数据库字段映射成各种名字,所以这种方法不可行。

思路二:

mybatis逆向工程生成的Mapper.xml文件里面有resultMap来处理字段映射的问题,那么我们只需要读取这个xml文件,根据property找到column。读取xml是一件很辛苦的事情,所以我也不想这么做。

思路三:

既然映射完以后,操作变得这么麻烦,干脆不映射。最终我采用的也是这种方式。只需要在mybatis_generator配置文件里面配置就行了。

这样配置完以后,生成的实体就会使用真实的字段名。当然现在仍然可以使用columnOverride进行字段映射。

<table tableName="" domainObjectName="">
	<property name="useActualColumnNames" value="true"/>
</table>

2.填充表单时datebox不显示数据的问题

3.datagrid设置了fitColumns=“true"仍然显示横向滚动条

查看是否使用了重复的列字段

4.tree仅叶子节点可以点击

需要同时设置checkbox:true,onlyLeafCheck: true。仅设置onlyLeafCheck: true,无效!