jQuery MiniUI

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

datagrid动态生成列 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2012-12-18 14:47:17 |只看该作者 |倒序浏览
  • var grid = new mini.DataGrid();
  • grid.set({
  •     url: "../data/dataservice.aspx?method=SearchEmployees",
  •     style: "width:700px;height:280px;",
  •     valueField: "id",
  •     columns: [
  •         { type: "indexcolumn" },
  •         { field: "loginname", width: 120, headerAlign: "center", allowSort: true },
  •         { field: "name", width: 120, headerAlign: "center", allowSort: true }
  •     ]
  • });
  • grid.render(document.body);
  • 这段代码我了解,有几个问题想请教下,
  • 1.如果在前面加入  {type:"checkcolumn"},为什么会出现单选按钮而不是多选按钮,怎么解决?
  • 2.怎么生成多表头、合并表格头的表格,如http://www.miniui.com/demo/#src=datagrid/datagrid.html 的表格列
  • 3.生成的datagrid,内容背景色为黄色,能修改么?
  • 谢谢~

Rank: 9Rank: 9Rank: 9

沙发
发表于 2012-12-18 16:25:12 |只看该作者
1.multiSelct: true
2.嵌套写columns
columns: [
   {header: "a",
      columns: [
         {header: "b"}
      ]
   },
   {header: "c"}
]
3.自定义渲染:http://www.miniui.com/demo/#src=datagrid/drawcell.html

Rank: 3Rank: 3

板凳
发表于 2012-12-18 19:03:13 |只看该作者
niko 发表于 2012-12-18 16:25
1.multiSelct: true
2.嵌套写columns
columns: [

谢谢管理员的回复,还有两个问题,望能回复
1.   { type: "checkcolumn",multiSelect:true },页面显示效果,而不是,没法显示为多选框的样式
2. 想让用户可以编辑动态生成的datagrid,像例子中
<div field="loginname" width="120" headerAlign="center" allowSort="true">员工帐号
                <input property="editor" class="mini-textbox" style="width:100%;" />
</div>是向div标签中插入editor,  datagrid是否也能动态生成可编辑的功能?
谢谢

附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 9Rank: 9Rank: 9

地板
发表于 2012-12-18 21:00:41 |只看该作者
2.grid.set({multiSelect: true});
3.
columns: [
   {headre:"a",
     editor: {type: "textbox", style: "width:100%"}
   }
]

Rank: 3Rank: 3

5#
发表于 2012-12-19 10:56:36 |只看该作者
niko 发表于 2012-12-18 21:00
2.grid.set({multiSelect: true});
3.
columns: [

               var grid = new mini.DataGrid();
               grid.set({
                id:"datagrid1",
                style: "width:100%;",
                columns: [
                        { type: "indexcolumn" ,header:"序号",headerAlign:"center"},
                        { headerAlign: "center",header:"列一",
                           editor: {type: "textbox", style: "width:100%"}
                        },
                        { headerAlign: "center", header:"列二",
                           editor: {type: "textbox", style: "width:100%"}
                        }

                     ]
                 });
                grid.render(document.body); 貌似无法生成可编辑的文本框

Rank: 8Rank: 8

6#
发表于 2012-12-19 13:47:47 |只看该作者
noheaven 发表于 2012-12-19 10:56
var grid = new mini.DataGrid();
               grid.set({
                id:"datag ...

allowCellSelect:true,
allowCellEdit:true,
加了没,不加的话就是一个不可编辑的单元格

Rank: 3Rank: 3

7#
发表于 2012-12-21 12:46:00 |只看该作者
factory 发表于 2012-12-19 13:47
allowCellSelect:true,
allowCellEdit:true,
加了没,不加的话就是一个不可编辑的单元格 ...

动态生成的datagrid,想做自动计算效果,,即输入成绩后自动填写分数问题:走后台计算成绩后 e.cellHtm=100 这条语句不起作用,
grid.set({ondrawcell:"onDrawCell"});
function onDrawCell(e)
{
  $.ajax({
                    url:"../AjaxService.aspx?method=AutoCompute,
                    success:function(text)
                    {
                        if(e.field=="HundredsScore")
                        {
                            e.cellHtml=100;                     
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                               alert(jqXHR.responseText);
                    }
                });

}
请问问题出在哪里?谢谢
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 3Rank: 3

8#
发表于 2012-12-21 12:49:25 |只看该作者
本帖最后由 noheaven 于 2012-12-21 14:09 编辑
noheaven 发表于 2012-12-21 12:46
动态生成的datagrid,想做自动计算效果,,即输入成绩后自动填写分数问题:走后台计算成绩后 e.cellHtm=10 ...

function onDrawCell(e)
            {
                var record=e.record,
                column=e.column,
                field=e.field,
                value=e.value;

                $.ajax({
                    url:"../AjaxService.aspx?method=AutoCompute,
                    success:function(text)
                    {
                        if(e.field=="HundredsScore")
                        {
                            var qqq=record.HundredsLevel*10;
                            e.cellHtml=qqq;                     
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                               alert(jqXHR.responseText);
                    }
                });
            }
简要代码如上,只是省去了计算分数的代码,传值和后台传值到前台都获取正确,就是e.cellHtml=成绩不起作用,请问问题出在哪里,谢谢!

Rank: 3Rank: 3

9#
发表于 2012-12-21 14:09:00 |只看该作者
factory 发表于 2012-12-19 13:47
allowCellSelect:true,
allowCellEdit:true,
加了没,不加的话就是一个不可编辑的单元格 ...

alert(e.cellHtml)
可以看出e.cellHtml的值是等于qqq的,但是datagrid上就是显示不出来~

Rank: 8Rank: 8

10#
发表于 2012-12-21 14:15:08 |只看该作者
noheaven 发表于 2012-12-21 12:49
function onDrawCell(e)
            {
                var record=e.record,

你一定要放到后台进行一个自动计算吗?
ondrawcell事件在你生成表格的时候,有一个单元格就触发一次,也就是有几个单元格,就跟后台交互几次,那样子效率跟开销都很大啊,建议你参考ondrawcell的demo,前台来自动计算

Archiver|普加软件

GMT+8, 2024-11-27 07:21 , Processed in 1.056302 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部