jQuery MiniUI

 找回密码
 立即注册
查看: 2521|回复: 5
打印 上一主题 下一主题

动态设置列后,checkcolumn列为什么不起作用了? [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2014-9-25 15:54:42 |只看该作者 |倒序浏览
说明一下应用场景:
用户调整表格的列位置、大小,然后保存保存至数据库中,下次登录或刷新表格,则看到的是自己定义的表格样式。
现在问题是,从服务器取得列属性,还原的表格样式后,checkcolumn列不起作用了,其他都可以正常运行。

页面重现代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>动态设置列</title>
    <script src="scripts/boot.js" type="text/javascript"></script>
</head>
<body>
        <input type="button" value="设置列"/>
    <div id="datagrid1" class="mini-datagrid" style="width:700px;height:200px;" url=""
        allowCellEdit="true" allowCellSelect="true" multiSelect="true" fitColumns="false"
    >
                <div property="columns">
                        <div type="indexcolumn" width="30" summaryType="count"></div>
                        <div type="checkcolumn" width="30" ></div>
                        <div field="EmpLoginName" width="160" headerAlign="center" allowSort="true">lname</div>
                        <div field="EmpName" width="120" headerAlign="center" allowSort="true">name</div>
                        <div field="EmpDep.netName" width="160" headerAlign="center" allowSort="true">dep</div>
                        <div field="EmpCreateDate" width="180" headerAlign="center" allowSort="true" >date</div>
                </div>
        </div>
        <textarea id="t" class="mini-textarea" width="900" height="200"></textarea>
        <div id="datagrid2" class="mini-datagrid" style="width:700px;height:200px;"
        allowCellEdit="true" allowCellSelect="true" multiSelect="true" fitColumns="false"
    >
    </div>
</body>
</html>
<script type="text/javascript">
mini.parse();
var grid1 = mini.get("datagrid1");
var grid2 = mini.get("datagrid2");

function setcols(){
        var cols = mini.encode(grid1.columns);//模拟存入数据库(将列对象转为String)
        mini.get("t").setValue(cols);//这里只是显示模拟存入数据库的数据
       
        var newcols = mini.decode(cols);//模拟从数据库库取出数据并decode为js对象
        grid2.set({columns:newcols});//还原grid1的列
       
        grid1.addRow({});//模拟数据行
        grid2.addRow({});//模拟数据行
}
</script>

Rank: 8Rank: 8

沙发
发表于 2014-9-25 17:07:15 |只看该作者
function setcols() {
        var cols = mini.encode(grid1.columns); //模拟存入数据库(将列对象转为String)
        mini.get("t").setValue(cols); //这里只是显示模拟存入数据库的数据

        var newcols = mini.decode(cols); //模拟从数据库库取出数据并decode为js对象

        for (var i = 0, l = newcols.length; i < l; i++) {
            var col = newcols[i];
            delete col.inited;
        }
        grid2.set({ columns: newcols });  //还原grid1的列

        grid1.addRow({}); //模拟数据行
        grid2.addRow({}); //模拟数据行
    }

Rank: 3Rank: 3

板凳
发表于 2014-9-25 17:55:31 |只看该作者
felt 发表于 2014-9-25 17:07
function setcols() {
        var cols = mini.encode(grid1.columns); //模拟存入数据库(将列对象转为St ...

解决了,谢谢。能麻烦讲解下删掉的这个是起什么作用吗?

Rank: 8Rank: 8

地板
发表于 2014-9-26 09:29:00 |只看该作者
mfgc 发表于 2014-9-25 17:55
解决了,谢谢。能麻烦讲解下删掉的这个是起什么作用吗?

用户不需要了解这个东西,这个是我们内部在处理创建列的时候,为了防止重复初始化一些东西而加的属性

Rank: 3Rank: 3

5#
发表于 2014-9-26 09:39:04 |只看该作者
为何在grid1中添加相关固定列属性(如frozenstartcolumn="2" frozenendcolumn="2")grid1起作用,grid2中不起作用?

Rank: 8Rank: 8

6#
发表于 2014-9-26 09:48:18 |只看该作者
bl00071 发表于 2014-9-26 09:39
为何在grid1中添加相关固定列属性(如frozenstartcolumn="2" frozenendcolumn="2")grid1起作用,grid2中不 ...

这是表格的属性,不是列的

Archiver|普加软件

GMT+8, 2024-7-8 18:42 , Processed in 1.036611 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部