jQuery MiniUI

标题: miniui 框架以下功能可否实现 [打印本页]

作者: hupuna    时间: 2014-1-17 13:13:28     标题: miniui 框架以下功能可否实现

1、对渲染的单元格内容可以设置布局吗 ?即针对单元格显示的内容可以设置她的显示位置例如居中 ,居左。而不是用空格和回车去控制一个单元格中的多个内容.
2、对于渲染的单元格执行了单元格点击事件进行记录添加后,可否把添加事件的记录值返回到渲染单元格中显示,类似于outlook的日历提醒功能效果
3、可否自定义按钮,即根据用户的权限或功能判断哪些按钮显示,哪些按钮不显示。如果用隐藏做,那么查看页面源码的时候隐藏信息是否可见。
4、我的实体A里定义了一个list,此list里存放的是另一个实体类型B,前台页面可否根据list的实际大小动态的显示出A的所有属性及list中每个记录的某一个指定属性

作者: factory    时间: 2014-1-17 13:51:08

1.设置单元格的样式 text-align:center
2.单元格的编辑,表格的updateRow()等等,都会重新出发一次ondrawcell
3.可以从后台获取该用户的权限,如果不满足,则该按钮setVisible(false)
4. 前台可以遍历对象获得所有属性
var obj = {id:"1",name:"2",age:3}
for(var key in obj){
   alert(obj[key]);
}
作者: hupuna    时间: 2014-1-17 14:22:42

factory 发表于 2014-1-17 13:51
1.设置单元格的样式 text-align:center
2.单元格的编辑,表格的updateRow()等等,都会重新出发一次ondrawcell ...

1、渲染单元格可以用你说的属性
2、我们用的不是编辑本单元格 是点击这个单元格 然后弹出页面 页面是用来做添加操作的。类似于outlook的日历提醒功能。
4、如何遍历实体中list里存放的属性的值


作者: factory    时间: 2014-1-17 14:45:23

hupuna 发表于 2014-1-17 14:22
1、渲染单元格可以用你说的属性
2、我们用的不是编辑本单元格 是点击这个单元格 然后弹出页面 页面是用来 ...

2. 弹出之后,你把值回写到单元格,如果不是单元格编辑
那么肯定是grid.updateRow(row,{name:"张三"})
这种方式去回写了,这种也是会触发ondrawcell的

4.数组的遍历 for(var i=,l=list.length;i<l;i++){....}
对象属性字段 就是上面写的
作者: hupuna    时间: 2014-1-20 17:35:21

1、对渲染的单元格内容可以设置布局吗 ?即针对单元格显示的内容可以设置她的显示位置例如居中 ,居左。而不是用空格和回车去控制一个单元格中的多个内容.
2、对于渲染的单元格执行了单元格点击事件进行记录添加后,可否把添加事件的记录值返回到渲染单元格中显示,类似于outlook的日历提醒功能效果
3、可否自定义按钮,即根据用户的权限或功能判断哪些按钮显示,哪些按钮不显示。如果用隐藏做,那么查看页面源码的时候隐藏信息是否可见。
4、我的实体A里定义了一个list,此list里存放的是另一个实体类型B,前台页面可否根据list的实际大小动态的显示出A的所有属性及list中每个记录的某一个指定属性


你好,这四个问题我上周提过。对于您的回答我有点疑问。
1、你说可以设置 可否给个例子。我现在的写法是
  grid.on("drawcell", function (e) {
      var record = e.record,
     column = e.column,
     field = e.field,
     value = e.value;
      var row = grid.getTotalCount();//是总记录数。
      var data = grid.getData();
     var h =  document.body.clientHeight;
      if (field == "MONDAY") {
         var html = "";
       var o = e.record.MONDAY;
       var o1 = e.record.MONDAYLUNAR;
       if(o1.indexOf("月")!=-1 || o.length>3){
        html = o1+"  "+o;
         }else{
        html = o1+"                    "+o;
            }
       e.rowStyle = "height: 71px";
       e.cellHtml = html;
   }
o1和o是单元格要显示的两个内容 ,我现在是用空格调整他们的距离。如何用您说的那种方法控制他们的样式,而且是对两个显示内容分别控制 ,一个居左,一个居右。

2、我用的是oncellclick事件,不是编辑事件。要做的效果是outlook日历提醒效果

作者: factory    时间: 2014-1-21 09:20:31

hupuna 发表于 2014-1-20 17:35
1、对渲染的单元格内容可以设置布局吗 ?即针对单元格显示的内容可以设置她的显示位置例如居中 ,居左。而 ...

1.e.cellStyle = "text-align:center"

2.只要你执行任何修改单元格内容的事情,都会触发该单元格的ondrawcell事件
作者: hupuna    时间: 2014-1-21 14:41:03

本帖最后由 hupuna 于 2014-1-21 14:49 编辑

你好
1、1.e.cellStyle = "text-align:center",这个是设置单元格里所显示的所有内容的显示方式,我想问的是渲染单元格中所显示的每个内容可不可以作为一个独立的个体单独去设置他们各自的样式。也就是取代我昨天上传的代码的空格部分让显示内容o1居左显示,显示内容o居右显示。
2、我知道不管用什么事件都能触发ondrawcell方法,但是我想的功能是这样的 给你上传两张图片看一下
[attach]3807[/attach][attach]3808[/attach][attach]3809[/attach]是把一个新内容回写到渲染单元格中。



作者: factory    时间: 2014-1-21 15:59:01

hupuna 发表于 2014-1-21 14:41
你好
1、1.e.cellStyle = "text-align:center",这个是设置单元格里所显示的所有内容的显示方式,我想问的 ...

1. ondrawcell是每个单元格进行触发的
你要让你某个单元格居中,其他居右,那你放个if判断下不就好了吗?
var index = grid.indexOf(e.row)
if(e.field="age" && index == 2){
    e.cellStyle = "text-align:center;"
}
第三行的性别列,文字居中,其他的不变

2.
var value = "14:30 15:00 吃饭 (学校)"
grid.updateRow(row,{yourField:value})

作者: hupuna    时间: 2014-1-22 08:42:06

本帖最后由 hupuna 于 2014-1-22 08:54 编辑

我的版主啊,我表述的很不清晰吗?我说的不是设置某一个单元格和其他单元格不一样,而是渲染的单元格里不是可以显示多个内容吗?对显示在同一个单元格里的不同的内容设置对齐方式。您的意思是[attach]3817[/attach]两列的显示方式不同了,但是我的意思是不是针对两列的是一个单元格或者说是每个单元格的[attach]3816[/attach],例如一个单元格的两个内容如初七和7日是这个单元格显示的两个内容,我怎么实现让初七在单元格中居左显示,让7日在同一个单元格中居右显示。我现在这种效果是用空格调整的。
作者: factory    时间: 2014-1-22 09:20:20

hupuna 发表于 2014-1-22 08:42
我的版主啊,我表述的很不清晰吗?我说的不是设置某一个单元格和其他单元格不一样,而是渲染的单元格里不是 ...

那也是改e.cellHtml
里面自己放2个HTML的dom元素,比如div,然后设置其中一个的文字居中,另外一个不设置
作者: hupuna    时间: 2014-1-22 09:31:50

本帖最后由 hupuna 于 2014-1-22 09:38 编辑

能给个例子吗?还有grid.updateRow是更新正行内容吧,我要的是哪个单元格添加事件就把内容回显到添加事件的那一个单元格里。
e.cellHtml = <div style = "text-align:left">o1</div><div>o</div>这样写报错

作者: factory    时间: 2014-1-22 10:04:20

hupuna 发表于 2014-1-22 09:31
能给个例子吗?还有grid.updateRow是更新正行内容吧,我要的是哪个单元格添加事件就把内容回显到添加事件的 ...

引号呢?没引号不是字符串,当然报错了

e.cellHtml = "<div style = 'text-align:center;'>o1</div><div>o</div>"

[attach]3820[/attach]

作者: hupuna    时间: 2014-1-22 10:11:01

本帖最后由 hupuna 于 2014-1-22 10:14 编辑
factory 发表于 2014-1-22 10:04
引号呢?没引号不是字符串,当然报错了

e.cellHtml = "o1o"


o1和o是动态显示的内容 ,这样写完变成显示o1和o了。而且我想要的是在一排一个居左一个居右 这样变成不在一行了。内容显示解决了  但是效果和我想要的还是不一样啊。
还有回写值的问题,怎么解决啊?

作者: factory    时间: 2014-1-22 10:15:36

hupuna 发表于 2014-1-22 10:11
o1和o是动态显示的内容 ,这样写完变成显示o1和o了。而且我想要的是在一排一个居左一个居右 这样变成不在 ...

动态显示无所谓啊,你字符串里面+变量 不就行了吗?

一个靠左一个靠右,那就用float来做

"<span style = 'display:inline-block;float:left'>o1</span><span style = 'display:inline-block;float:right;'>o</span>"
[attach]3821[/attach]

这些都是CSS的样式问题.ondrawcell等于是把datagrid的单元格给到你,具体里面如何显示,你自己任意去决定
作者: hupuna    时间: 2014-1-22 10:26:56

本帖最后由 hupuna 于 2014-1-22 10:32 编辑
factory 发表于 2014-1-22 10:15
动态显示无所谓啊,你字符串里面+变量 不就行了吗?

一个靠左一个靠右,那就用float来做


OK,这个问题解决了。但是回写值那个问题怎么解决呢 像我给你截的outlook图那样。点击哪个单元格就针对哪个单元格添加事件。然后再把添加的标题回写到点击的单元格里。
对于这个问题的表述,我这么说,您理解吧?

作者: factory    时间: 2014-1-22 13:42:06

hupuna 发表于 2014-1-22 10:26
OK,这个问题解决了。但是回写值那个问题怎么解决呢 像我给你截的outlook图那样。点击哪个单元格就针对哪 ...

回写值 grid.updateRow(row,{field:value})

一样也会触发ondrawcell事件 , 你的o1 和o 两个是变量,他们的值是你返回的数据,就可以了
作者: hupuna    时间: 2014-1-22 13:59:33

factory 发表于 2014-1-22 13:42
回写值 grid.updateRow(row,{field:value})

一样也会触发ondrawcell事件 , 你的o1 和o 两个是变量,他们 ...

不是重新显示O1和O的值,是在O1和O存在的基础上,加入一个新的值
作者: factory    时间: 2014-1-22 14:07:51

hupuna 发表于 2014-1-22 13:59
不是重新显示O1和O的值,是在O1和O存在的基础上,加入一个新的值

那你自己改e.cellHtml不就好了吗?
你要加新值,加新元素,就加入到e.cellHtml里面

你要改o1,o的值,把他写成变量,去给他赋值就行了
作者: hupuna    时间: 2014-1-22 14:29:54

本帖最后由 hupuna 于 2014-1-22 14:32 编辑
factory 发表于 2014-1-22 14:07
那你自己改e.cellHtml不就好了吗?
你要加新值,加新元素,就加入到e.cellHtml里面


我也知道这个思路,我是用grid.on触发的渲染事件,点击单元格后弹出添加事件页面。问题在添加页面的哪个方法中存储要返回的值,父页面在哪接这个值,接完之后怎么把值添加到grid.on事件中去。能给个例子吗?
作者: factory    时间: 2014-1-22 14:58:56

hupuna 发表于 2014-1-22 14:29
我也知道这个思路,我是用grid.on触发的渲染事件,点击单元格后弹出添加事件页面。问题在添加页面的哪个 ...

http://www.miniui.com/demo/#src=datagrid/rowedit_openpage.html
作者: hupuna    时间: 2014-1-23 17:02:37

在这个例子中回写确实可以,但是如果是一个渲染的单元格 我用e.field得不到field的值啊 alert出来的是undefined 不用这种方法用单元格点击事件是可以获得到值的。我想问的是用例子中的方法 如何获得e.field的值
作者: factory    时间: 2014-1-23 17:07:16

hupuna 发表于 2014-1-23 17:02
在这个例子中回写确实可以,但是如果是一个渲染的单元格 我用e.field得不到field的值啊 alert出来的是undef ...

e.column.field总归能获得field的
作者: hupuna    时间: 2014-1-24 08:54:06

依然获取不到啊  
function addtodate(e) {
    var record = e.record,
     column = e.column,
     field = e.field,
     value = e.value;
    alert(column.field);报field为空或不是对象。
   alert(e.column.field);报column.field为空或不是对象。
   }   
作者: felt    时间: 2014-1-24 09:20:17

hupuna 发表于 2014-1-24 08:54
依然获取不到啊  
function addtodate(e) {
    var record = e.record,

ondrawcell的参数{
    sender: Object,
    rowIndex: Number,
    columnIndex: Number,
    record: Object,   
    column: Object,
    field: String,
    value: String,
    cellHtml: "",
    rowCls: "",
    cellCls: "",
    rowStyle: "",
    cellStyle: ""
}
有e.field的
把页面打包上来我们看下吧
作者: factory    时间: 2014-1-24 09:40:16

hupuna 发表于 2014-1-24 08:54
依然获取不到啊  
function addtodate(e) {
    var record = e.record,

你这列给了field了没? checkcolumn,indexcolumn这些本来就不用设field的当然没field了
作者: hupuna    时间: 2014-1-24 12:52:32

factory 发表于 2014-1-24 09:40
你这列给了field了没? checkcolumn,indexcolumn这些本来就不用设field的当然没field了 ...

当然给了啊,之前没用例子中的方法的时候都是能取到的。而且不是checkcolumn,indexcolumn
作者: factory    时间: 2014-1-24 13:03:45

hupuna 发表于 2014-1-24 12:52
当然给了啊,之前没用例子中的方法的时候都是能取到的。而且不是checkcolumn,indexcolumn ...

[attach]3848[/attach]

你确定你给field了? 当前执行到的ondrawcell不是checkcolumn或者indexcolumn??

你自己好好调试调试为什么没field.


作者: hupuna    时间: 2014-1-24 13:46:01

本帖最后由 hupuna 于 2014-1-24 13:47 编辑
[attach]3850[/attach]

[attach]3850[/attach]felt 发表于 2014-1-24 09:20

ondrawcell的参数{
    sender: Object,
    rowIndex: Number,


好的,我这就传一个你们看一下。
作者: hupuna    时间: 2014-1-24 13:49:19

factory 发表于 2014-1-24 13:03
你确定你给field了? 当前执行到的ondrawcell不是checkcolumn或者indexcolumn??

你自己好好调试调试为 ...

在渲染方法里能取到,在onbuttonclick="addtodate"中的addtodate方法中取不到
作者: felt    时间: 2014-1-24 14:07:33

hupuna 发表于 2014-1-24 13:49
在渲染方法里能取到,在onbuttonclick="addtodate"中的addtodate方法中取不到

你onbuttonclick="addtodate"是buttonedit编辑器的事件,又不是表格的事件,没有那些参数的,肯定是undefined
作者: factory    时间: 2014-1-24 14:09:15

hupuna 发表于 2014-1-24 13:49
在渲染方法里能取到,在onbuttonclick="addtodate"中的addtodate方法中取不到

那你也要看这个事件对象是谁啊,onbuttonclick是什么? 他又不是表格的事件,事件对象当然也不会是表格,自然就没表格的一些属性了.


作者: hupuna    时间: 2014-1-24 15:34:11

factory 发表于 2014-1-24 14:09
那你也要看这个事件对象是谁啊,onbuttonclick是什么? 他又不是表格的事件,事件对象当然也不会是表格,自然 ...

那我想实现这种功能怎么做啊,我是用你那次给我的例子套进来,但是我操作的单元格又是渲染单元格。或者说我用你的例子,但是操作的单元格式渲染单元格,我如何获得这个渲染单元格里的值
作者: hupuna    时间: 2014-1-24 15:36:47

更直白点说,我就是想实现outlook的日历提醒功能。咱们的框架如何实现
作者: factory    时间: 2014-1-24 15:37:04

hupuna 发表于 2014-1-24 15:34
那我想实现这种功能怎么做啊,我是用你那次给我的例子套进来,但是我操作的单元格又是渲染单元格。或者说 ...

onbuttonclick 我都不知道你用的哪个控件,你 的页面结构我也不了解.
你说的渲染,不是渲染span标签上去吗? 跟miniui控件的onbuttonclick 事件有什么关系?
作者: hupuna    时间: 2014-1-24 15:38:08

felt 发表于 2014-1-24 14:07
你onbuttonclick="addtodate"是buttonedit编辑器的事件,又不是表格的事件,没有那些参数的,肯定是undef ...

哦,那我能获得到所点击的渲染单元格的值吗?
作者: factory    时间: 2014-1-24 15:40:53

hupuna 发表于 2014-1-24 15:38
哦,那我能获得到所点击的渲染单元格的值吗?

你渲染到表格上的东西,那是另外的东西,他不属于表格, 等于是贴在单元格上的.

你可以在ondrawcell的时候,把field给到这个span的id上,通过id来跟列的field关联起来




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