jQuery MiniUI

标题: 关于官网Demo弹出表格多选(JS)其中的一个问题。 [打印本页]

作者: nbakill2    时间: 2013-5-8 09:38:09     标题: 关于官网Demo弹出表格多选(JS)其中的一个问题。

http://www.miniui.com/demo/#src=buttonedit/selectGrid_js.html

这是Demo地址。。

JS代码中有一段.

function onButtonEdit(e) {
        var buttonEdit = e.sender;

        var win = new UserSelectWindow();

        win.show();
        win.search();

        //初始化数据
        win.setData(null, function (action) {
            if (action == "ok") {
                //获取数据
                var row = win.getData();
                if (row) {
                    buttonEdit.setValue(row.id);
                    buttonEdit.setText(row.name);
                    alert("选中记录: " + row.name);
                }
            }
        });
    }


红色部分。。我的row中,可能不是叫id,name  而且到底叫什么,是动态的,并不是每一次执行这段JS都是固定的名称。。有没有什么方法可以动态设置row中,我要取某个字段呢?

比如我第一次执行这段JS的时候, 实际需要的是  buttonEdit.setValue(row.aa); buttonEdit.setText(row.bb); 第二次执行的时候由于加载的Data和Column不一样,代码实际需要的是 buttonEdit.setValue(row.cc); buttonEdit.setText(row.dd);


这个应该如何实现???

作者: factory    时间: 2013-5-8 10:33:25

本帖最后由 factory 于 2013-5-8 10:35 编辑

var obj ={a:"1",b:"2"}
var c = ....
obj[c]
作者: nbakill2    时间: 2013-5-8 11:01:50

factory 发表于 2013-5-8 10:33
var obj ={a:"1",b:"2"}
var c = ....
obj[c]

再请问。。我在设计HTML元素的时候。。

代码如下。。

<div class='mini-buttonedit' onbuttonclick='onButtonEdit' PKTitle='标题啊' IsMultiple='" + (item.IsMultiple == true ? "1" : "0") + "' PKCols='[列1,列2,列3]' PKData='[{...},{...},{...}]' PKText:'" + item.ComboboxText + "' PKID:'" + item.ComboboxID + "'></div>

红色部分是我自己加上去的属性。。

在以下方法中如何获取?


function onButtonEdit(e) {
        var buttonEdit = e.sender;

        var win = new UserSelectWindow();

        win.show();
        //win.search();

        //初始化数据
        win.setData(null, function (action) {
            if (action == "ok") {
                //获取数据
                var row = win.getData();
                if (row) {
                    buttonEdit.setValue(row.id);
                    buttonEdit.setText(row.name);
                    alert("选中记录: " + row.name);
                }
            }
        });
    }
作者: factory    时间: 2013-5-8 13:21:51

nbakill2 发表于 2013-5-8 11:01
再请问。。我在设计HTML元素的时候。。

代码如下。。

<div class='mini-buttonedit' data-options="{PKTitle:'xxxx',IsMultiple:'yyyy'}">

var t = mini.get("buttondite");
alert(t.PKTitle); alert(t.IsMultiple);

如果需要自定义标签的话,需要使用data-options
作者: nbakill2    时间: 2013-5-8 13:39:50

本帖最后由 nbakill2 于 2013-5-8 13:43 编辑
factory 发表于 2013-5-8 13:21
var t = mini.get("buttondite");
alert(t.PKTitle); alert(t.IsMultiple);

你用 mini.get("buttonedit")

但是我那个div里面没有给id='buttionedit'哦。。。

你用get,能获取到这个元素吗?我刚才测试了一下,是获取不到的。

因为我这个div元素,也是后台动态获取的。也有可能同时获取多个这样的div。那我每个都指定id号的话。

前台JS又怎么知道我有几个这样的div呢。。。又怎么能获取到自定义属性呢?

作者: factory    时间: 2013-5-8 14:57:08

nbakill2 发表于 2013-5-8 13:39
你用 mini.get("buttonedit")

但是我那个div里面没有给id='buttionedit'哦。。。

你总归要获取对象才能使用对象的API啊,
获取对象,要么id,要么name
mini.get(id)  mini.getbyName(name)

不然你获取不到,也不知道你想获取的是哪一个控件
作者: nbakill2    时间: 2013-5-8 15:00:37

factory 发表于 2013-5-8 14:57
你总归要获取对象才能使用对象的API啊,
获取对象,要么id,要么name
mini.get(id)  mini.getbyName(name ...

<div class='mini-buttonedit' data-options="{PKTitle:'xxxx',IsMultiple:'yyyy'}">

我自己能不能在这行代码中加入  onclick='click(this);'

然后页面JS中有这样一个方法

function click(e){
      alert(e.PKTitle);
}
因为我通过这样的方法传入this 这样就不需要ID也不需要Name了。。。

但是我试过了,好像没反应哦。、。。

作者: factory    时间: 2013-5-8 15:04:04

nbakill2 发表于 2013-5-8 15:00
我自己能不能在这行代码中加入  onclick='click(this);'

然后页面JS中有这样一个方法

onclick="click"

function click(e){
    ....
}
作者: nbakill2    时间: 2013-5-8 15:07:51

本帖最后由 nbakill2 于 2013-5-8 15:09 编辑
factory 发表于 2013-5-8 15:04
onclick="click"

function click(e){

我是按照你这个写的,但是无法触发这个事件哦。。。



作者: felt    时间: 2013-5-8 15:20:49

onbuttonclick
作者: nbakill2    时间: 2013-5-8 15:26:29

本帖最后由 nbakill2 于 2013-5-8 15:38 编辑
felt 发表于 2013-5-8 15:20
onbuttonclick

<div class='mini-buttonedit' data-options="{PKTitle:'xxxx',IsMultiple:'yyyy'}" onbuttonclick='onbuttonclick'>

我本来的页面上就有这个JS方法,如下

function onButtonEdit(e) {
        var btnEdit = this;

        alert(e.PKTitle);//这里获取不到PKTitle啊!

        mini.open({
            url: bootPATH + "../demo/CommonLibs/MultiSelectGridWindow3.html",
            width: 650,
            height: 380,
            ondestroy: function (action) {

                if (action == "ok") {
                    var iframe = this.getIFrameEl();

                    var data = iframe.contentWindow.GetData();
                    data = mini.clone(data);

                    btnEdit.setValue(data.id);
                    btnEdit.setText(data.text);
                }
            }
        });

    }
作者: factory    时间: 2013-5-8 16:46:04

nbakill2 发表于 2013-5-8 15:07
我是按照你这个写的,但是无法触发这个事件哦。。。

buttonedit 没onclick事件,只有onbuttonclick,你得去看看API。。。。
作者: nbakill2    时间: 2013-5-8 17:15:28

factory 发表于 2013-5-8 16:46
buttonedit 没onclick事件,只有onbuttonclick,你得去看看API。。。。

有没有什么办法,可以让它在触发事件的时候,获得自己的data-options里面的属性的值??
作者: factory    时间: 2013-5-8 17:36:24

nbakill2 发表于 2013-5-8 17:15
有没有什么办法,可以让它在触发事件的时候,获得自己的data-options里面的属性的值?? ...

e.sender 就是事件激发者
作者: nbakill2    时间: 2013-5-8 18:02:43

factory 发表于 2013-5-8 17:36
e.sender 就是事件激发者

貌似 e.sender.PKTitle是 undefind哦。。。
作者: factory    时间: 2013-5-9 10:47:47

nbakill2 发表于 2013-5-8 18:02
貌似 e.sender.PKTitle是 undefind哦。。。

[attach]1833[/attach]

<body>
    <div class='mini-buttonedit' data-options="{PKTitle:'xxxx',IsMultiple:'yyyy'}" onbuttonclick='onbuttonclick'>
</body>
</html>
<script type="text/javascript">
    mini.parse()
    function onbuttonclick(e) {
        alert(e.sender.PKTitle)
    }
</script>






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