jQuery MiniUI

标题: grid中用到mini-buttonedit [打印本页]

作者: mfanworld    时间: 2014-12-22 12:01:57     标题: grid中用到mini-buttonedit

grid中用到mini-buttonedit
第一列输入了数值,value跟text都放入值了
下列点中会显示上一列的东西,但是当鼠标失去焦点的时候显示的东西就没了
[attach]5695[/attach]列2显示了列一的数值
[attach]5696[/attach]
当点列3的时候列2不显示了

,怎么让点列3的时候列2的数值还保存在那?


作者: dforce    时间: 2014-12-22 12:05:14

这列你设置了displyField了吗
作者: mfanworld    时间: 2014-12-22 13:35:10

没有设置displayField
作者: mfanworld    时间: 2014-12-22 14:09:19

dforce 发表于 2014-12-22 12:05
这列你设置了displyField了吗

没有设置displayField,设置了数值就能自动带过去吗?
作者: mfanworld    时间: 2014-12-22 14:37:36

dforce 发表于 2014-12-22 12:05
这列你设置了displyField了吗

function beginedit(e){
                var field = e.field;
                        if (field =="dk"){
                                if(grid.getRow(0)!=dkdispllyfield){
                                        e.row.dk= grid.getRow(0).dk;
                                       
                                        e.row.dkdisplyfield= grid.getRow(0).dkdisplyfield;
                                        grid.updateRow(e.row, e.row);
                                }
                               
                        }
        }
设置displyField跟没设置displyField用上述代码,mini-buttonedit也是点击下显示上一行的数据,失去焦点后就什么都不显示了。
作者: dforce    时间: 2014-12-22 15:41:51

mfanworld 发表于 2014-12-22 14:37
function beginedit(e){
                var field = e.field;
                        if (field =="dk"){

请参考我们buttonedit编辑器的示例
http://www.miniui.com/demo/#src=datagrid/rowedit_openpage.html
<div field="manager" displayField="manager_name" name="manager"
dept_grid.updateRow(row, {
                            manager: data.id,
                            manager_name: data.name
                        });
这些有弹出的编辑器都有field和displayField
field对应值,displayField对应显示
作者: mfanworld    时间: 2014-12-22 17:15:43

dforce 发表于 2014-12-22 15:41
请参考我们buttonedit编辑器的示例
http://www.miniui.com/demo/#src=datagrid/rowedit_openpage.html
  ...

<div id="grid" class="mini-datagrid" style="width:100%;height:100%;"  allowCellEdit="true" allowCellSelect="true"  oncellbeginedit="beginedit">
                <div field="dh" width="80" headerAlign="center">
                         <input id="fromLocId" property="editor" name="dh" displyField="dhfild"    class="mini-buttonedit" allowInput="false" onbuttonclick="onButtonEdit" />
                 </div>
</div>

function beginedit(e){
       var field = e.field;
                        if (field =="dh"){
                                if(grid.getRow(0)!=undefined){
                                       
                                        grid.updateRow(e.row, {
                                                dh: grid.getRow(0).dh,
                                                dhfild: grid.getRow(0).dhfild
           });
                                }
                               
                        }
    }
        
       function onButtonEdit(e) {
            var btnEdit = this;

            mini.open({
                url: "url",
                showMaxButton: false,
                title: "请选择",
                width: 510,
                height: 385,
                ondestroy: function (action) {
                    if (action == "ok") {
                        var iframe = this.getIFrameEl();
                        var data = iframe.contentWindow.GetData();
                        data = mini.clone(data);
                        
                        if (data) {
                            btnEdit.setValue(data.dh);
                            btnEdit.setText(data.dh);
                            var row = grid.getSelected();
                            row.dhfild=data.dh;
                            grid.updateRow(row,row);
                        }
                        
                     }else{
                        
                        btnEdit.setValue(null);
                        btnEdit.setText(null);
                          }
                     }
                });
         }
编辑时候触发beginedit,鼠标移出mini-buttonedit后第二行也没有自动赋值(期望第二行不用选择,失去焦点的时候第二行跟第一行显示的值是一样的,第一行的值是手动选择的)
作者: dforce    时间: 2014-12-22 17:35:00

mfanworld 发表于 2014-12-22 17:15
function beginedit(e){
       var field = e.field;
                        if (field =="dh"){

加列上,不是编辑器上
作者: mfanworld    时间: 2014-12-23 08:24:40

dforce 发表于 2014-12-22 17:35
加列上,不是编辑器上

<div id="grid" class="mini-datagrid" style="width:100%;height:100%;"  allowCellEdit="true" allowCellSelect="true"  oncellbeginedit="beginedit">
                <div field="dh" width="80" headerAlign="center" id="dh" displyField="dhfild"  name="dh" >
                         <input  property="editor"    class="mini-buttonedit" allowInput="false" onbuttonclick="onButtonEdit" />
                 </div>
</div>

function beginedit(e){
       var field = e.field;
                        if (field =="dh"){
                                if(grid.getRow(0)!=undefined){
                                       
                                        grid.updateRow(e.row, {
                                                dh: grid.getRow(0).dh,
                                                dhfild: grid.getRow(0).dhfild
           });
                                }
                                
                        }
    }
        
       function onButtonEdit(e) {
            var btnEdit = this;

            mini.open({
                url: "url",
                showMaxButton: false,
                title: "请选择",
                width: 510,
                height: 385,
                ondestroy: function (action) {
                    if (action == "ok") {
                        var iframe = this.getIFrameEl();
                        var data = iframe.contentWindow.GetData();
                        data = mini.clone(data);
                        
                        if (data) {
                            btnEdit.setValue(data.dh);
                            btnEdit.setText(data.dh);
                            var row = grid.getSelected();
                            row.dhfild=data.dh;
                            grid.updateRow(row,row);
                        }
                        
                     }else{
                        
                        btnEdit.setValue(null);
                        btnEdit.setText(null);
                          }
                     }
                });
         }
displyField加到行上了,但是第二行不用选择,失去焦点的时候第二行跟第一行显示的值是一样的,第一行的值是手动选择的,这个功能不知道为什么还是不行..
作者: felt    时间: 2014-12-23 09:26:27

mfanworld 发表于 2014-12-23 08:24
function beginedit(e){
       var  ...

你不是自己在oncellbeginedit里面自己更新的和第一行一样?
作者: mfanworld    时间: 2014-12-23 09:48:15

felt 发表于 2014-12-23 09:26
你不是自己在oncellbeginedit里面自己更新的和第一行一样?

function beginedit(e){
       var field = e.field;
                        if (field =="dh"){//当列为dh
                                if(grid.getRow(0)!=undefined){//第一行用户输入过数值
                                        //下面代码的意思是取得第一行的数值放入mini-buttonedit里面
                                        grid.updateRow(e.row, {
                                                dh: grid.getRow(0).dh,
                                                dhfild: grid.getRow(0).dhfild
           });
                                }
                                
                        }
    }
现在是用了
grid.updateRow(e.row, {
                                                dh: grid.getRow(0).dh,
                                                dhfild: grid.getRow(0).dhfild
           });
但是grid里面的mini-buttonedit不显示任何东西,不知道什么情况
作者: felt    时间: 2014-12-23 10:04:35

mfanworld 发表于 2014-12-23 09:48
function beginedit(e){
       var field = e.field;
                        if (field =="dh"){//当 ...

本地测试可以,你那边还有问题的话
请提供完整重现页面
作者: mfanworld    时间: 2014-12-23 11:02:10

felt 发表于 2014-12-23 10:04
本地测试可以,你那边还有问题的话
请提供完整重现页面

代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

<script src="../template/miniui/boot.js" type="text/javascript"></script>

<!--引入皮肤样式-->
<link href="../template/miniui/themes/other/skin.css" rel="stylesheet"
        type="text/css" />
</head>
<body>
       
    <div id="grid" class="mini-datagrid" style="width:600px;height:280px;" allowResize="true"
          idField="id" url=""
        allowCellEdit="true" allowCellSelect="true"
    oncellbeginedit="beginedit">
                                                        <div property="columns">
                                                                        <div field="dh" width="80" id="dh"  headerAlign="center" name="dh" displyField="dhfile">
                                         列      <input property="editor"  class="mini-buttonedit" allowInput="false" onbuttonclick="onButtonEdit" />
                                      </div>
                           </div>
        </div>
        <script type="text/javascript">
        mini.parse();
        var grid = mini.get("grid");
   window.onload = windowOnload;
   function windowOnload() {  
  
           for(var i = 0; i < 10; i++) {
                   addRow();
           }

}
   function addRow() {
                var newRow = {};
                grid.selectAll(false);
                var leng = grid.getData().length;
                grid.addRow(newRow, leng);
                var row=grid.getRow(leng);
                row._status=null;
                grid.updateRow(row,row);
                grid.deselectAll (false);
        }
   
        function beginedit(e){
                var field = e.field;
                        if (field =="dh"){
                                if(grid.getRow(0)!=undefined){
                                        //这里上实现当鼠标离开后,mini-buttonedit中就显示第一列的值(如果第一列有值)
                                        grid.updateRow(e.row, {
                                                dh: grid.getRow(0).dh,
                                                dhfile: grid.getRow(0).dhfile
                    });
                                }
                               
                        }
        }
      
        
         //////////////////////////////////////////////
         function onButtonEdit(e) {
            var btnEdit = this;
            var index = grid.indexOf (grid.getSelected());
            if(index==0){
                    btnEdit.setValue(1);
                    btnEdit.setText(1);
                    var row = grid.getSelected();
                    row.dhfile=1;
                    grid.updateRow(row,row);
                 }
         }
        
      
    </script>


</body>
</html>
作者: felt    时间: 2014-12-23 11:26:54

mfanworld 发表于 2014-12-23 11:02
代码如下:

因为你结束编辑的时候buttonedit里面只有文本没有值,更新到field上,而displayField还是空的
grid.on("cellendedit",function(e){
            var row=e.row;
            var value=e.editor.getText();
            grid.updateRow(row,{dh:value,dhfile:value})
        })
作者: mfanworld    时间: 2014-12-23 15:29:09

felt 发表于 2014-12-23 11:26
因为你结束编辑的时候buttonedit里面只有文本没有值,更新到field上,而displayField还是空的
grid.on("c ...

原来要用oncellendedit,我一直用着oncellbeginedit,南辕北辙,难怪不能实现。十分感谢。




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