jQuery MiniUI

标题: 求助关于日历控件消失的问题 [打印本页]

作者: lixiaoliang7    时间: 2012-9-28 05:43:36     标题: 求助关于日历控件消失的问题

我的页面是通过JS动态生成的(包括搜索div和datagrid有div),当点击页面的查询按钮后,会重新加载页面(即重新通过JS生成页面)
代码如下:
  //日期 将日期存入全局变量
    var d = mini.get("txtDate");
    this.date = d.getFormValue();

    //条件  将下拉框的text value存入全局变量
    var s = mini.get("cmbSearchText");
    this.pinJiText = s.getValue();
    this.pinJiSymbol = s.getText();


    var html = "";
    html += spliceSearch();  //搜索div
    html += spliceGrid();    //datagrid div
    document.body.innerHTML = html;
    mini.parse();

    var dd = mini.get("txtDate");
    dd.setValue(this.date);
    var ss = mini.get("cmbSearchText");
    ss.setValue(this.pinJiText);
    mini.parse();

    LoadPage();


下图是刚加载页面, 这是日历控件是正常的
[attach]703[/attach]

下图是点击查询按钮后,日历控件消失了
[attach]704[/attach]

作者: lixiaoliang7    时间: 2012-9-28 08:56:30

刚测试了一下 chrome没有这个问题,IE有。
我的测试的是IE9
作者: niko    时间: 2012-9-28 09:12:33

你这个用法有点诡异。
你是不是为了做动态列,而动态创建表格的?

有两个解决方法:
1.你把你的页面做成一个html的,能重现问题的,打包上传,我们给你测试解决下。
2.你把动态生成表格的代码修改下:1)获取columns;2)grid.setColumns(columns);3)grid.load();
   这样可以动态设置表格列配置,并加载数据,这是标准的用法。


作者: lixiaoliang7    时间: 2012-9-28 09:37:00

niko 发表于 2012-9-28 09:12
你这个用法有点诡异。
你是不是为了做动态列,而动态创建表格的?

1)获取columns;2)grid.setColumns(columns);3)grid.load();

这个获取应如何获取。。。
获取columns后具体应该怎么修改?修改后set我到是明白
给个demo地址呗

作者: lixiaoliang7    时间: 2012-9-28 09:58:05

  var grid = mini.get("datagrid1");
    var cc = grid.getColumn("GuiDingJia");
    cc.header = this.pinJiSymbol ;
    grid.setColumns(cc);
    grid.load();


我是这么做的,运行完后,datagrid都没了。。。
作者: niko    时间: 2012-9-28 10:23:17

你动态生成列:
var columns = [];
...

grid.setColumns(columns);

作者: lixiaoliang7    时间: 2012-9-28 10:44:03

我其实就是想变化某个列头的header,非得动态生成,不能直接通过JS变化吗?就仅仅是一个列头而已。。。。重写动态代价就比较大了。。。
作者: niko    时间: 2012-9-28 11:05:57

你要把你的需求说清楚啊。。。
很简单的:
1.给列定义一个name="aaa"
2.grid.updateColumn("aaa", { header: "abc" });
作者: lixiaoliang7    时间: 2012-9-28 12:15:13

使用了grid.updateColumn("aaa", { header: "abc" });出现了如下问题:
下图是我点击搜索前,第一行前两列进行了合并,后边N行进行了合并

[attach]705[/attach]
然后,我点击搜索的一瞬间,如图:之前的合并全木了

[attach]706[/attach]
但load完毕后,发现后边N行的合并恢复了,但是第一行的两列合并失踪了。
[attach]707[/attach]


我是在grid.load后,再进行的grid.updateColumn("GuiDingJia", { header: this.pinJiSymbol  })
事实上我在load之前也加过这句进行了测试,依然是同样的uk

作者: niko    时间: 2012-9-28 13:00:23

这里解释下,对于合并单元格,我们提供了margeCells方法,一般在加载事件中后调用。
表格做合并单元格,一般是为了做报表展示用的。
建议你这样做:
1.将合并方法,独立出来,比如:function doMarges() { ...}
2.在onload和updateColumn的时候,都调用下doMarges方法。
这样加载、更改表头后,都能再次合并单元格,就可以了。

作者: lixiaoliang7    时间: 2012-9-28 14:11:13

现在再改起来就比较麻烦了…
问个事,如果我在调用grid.load()前进行updatecolumns,为什么第一行的合并也还是会失效呢?我明明在grid的加载完毕事件进行合并了。
作者: niko    时间: 2012-9-28 16:08:12

你的问题有点怪:
1.在调用grid.load()前进行updatecolumns
2.为什么第一行的合并也还是会失效呢
你更新column,跟合并有什么关系?

作者: lixiaoliang7    时间: 2012-9-28 18:00:05

niko 发表于 2012-9-28 16:08
你的问题有点怪:
1.在调用grid.load()前进行updatecolumns
2.为什么第一行的合并也还是会失效呢

但确实第一行的合并失效了…
作者: lixiaoliang7    时间: 2012-9-29 08:44:58

不好意思,找到原因了,很诡异
作者: niko    时间: 2012-9-29 09:26:44

把问题清晰罗列出来。
没有解决不了的问题,只有描述不清楚的问题。




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