jQuery MiniUI

标题: 动态设置列后,checkcolumn列为什么不起作用了? [打印本页]

作者: mfgc    时间: 2014-9-25 15:54:42     标题: 动态设置列后,checkcolumn列为什么不起作用了?

说明一下应用场景:
用户调整表格的列位置、大小,然后保存保存至数据库中,下次登录或刷新表格,则看到的是自己定义的表格样式。
现在问题是,从服务器取得列属性,还原的表格样式后,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>


作者: felt    时间: 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({}); //模拟数据行
    }
作者: mfgc    时间: 2014-9-25 17:55:31

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

解决了,谢谢。能麻烦讲解下删掉的这个是起什么作用吗?
作者: factory    时间: 2014-9-26 09:29:00

mfgc 发表于 2014-9-25 17:55
解决了,谢谢。能麻烦讲解下删掉的这个是起什么作用吗?

用户不需要了解这个东西,这个是我们内部在处理创建列的时候,为了防止重复初始化一些东西而加的属性
作者: bl00071    时间: 2014-9-26 09:39:04

为何在grid1中添加相关固定列属性(如frozenstartcolumn="2" frozenendcolumn="2")grid1起作用,grid2中不起作用?
作者: felt    时间: 2014-9-26 09:48:18

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

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




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2