jQuery MiniUI

标题: 两张表通过onSelectionChanged事件联动,表A数据为空表B不联动 [打印本页]

作者: meriberry    时间: 2017-6-15 18:00:25     标题: 两张表通过onSelectionChanged事件联动,表A数据为空表B不联动

两张表通过onSelectionChanged事件联动,表A数据为空表B不联动
请问怎么处理A表当前选中行为空?

作者: dforce    时间: 2017-6-15 18:13:12

可以判断a表中的选中行数量
e.selecteds.length
作者: meriberry    时间: 2017-6-16 09:15:40

dforce 发表于 2017-6-15 18:13
可以判断a表中的选中行数量
e.selecteds.length

可是 A表无数据时,不触发onSelectionChanged事件,可以在哪点判断?
作者: felt    时间: 2017-6-16 09:18:56

meriberry 发表于 2017-6-16 09:15
可是 A表无数据时,不触发onSelectionChanged事件,可以在哪点判断?

无法阻止不触发
但是你可以根据数据数量来判断是否执行
作者: felt    时间: 2017-6-16 09:19:02

meriberry 发表于 2017-6-16 09:15
可是 A表无数据时,不触发onSelectionChanged事件,可以在哪点判断?

无法阻止不触发
但是你可以根据数据数量来判断是否执行
作者: meriberry    时间: 2017-6-16 09:42:14

felt 发表于 2017-6-16 09:19
无法阻止不触发
但是你可以根据数据数量来判断是否执行

我想表达的意思是,表B通过表A的onSelectionChanged事件,联动出了数据,但后续表A的数据为空时,因为不触发onSelectionChanged事件,所以表B中仍然是之前联动出来的数据,怎样才可以让表B的数据同时也为空?
作者: meriberry    时间: 2017-6-16 10:10:48

felt 发表于 2017-6-16 09:19
无法阻止不触发
但是你可以根据数据数量来判断是否执行

e.selecteds.length 因为onSelectionChanged事件都不触发,所以判断不了啊
作者: felt    时间: 2017-6-16 10:47:52

meriberry 发表于 2017-6-16 10:10
e.selecteds.length 因为onSelectionChanged事件都不触发,所以判断不了啊

明白你的场景了,你这里应该需要在a表数据清空的时候把b表也清空一下。
你现在a表是怎样清空的,通过重新加载,还是setData方式?
作者: meriberry    时间: 2017-6-16 11:25:01

felt 发表于 2017-6-16 10:47
明白你的场景了,你这里应该需要在a表数据清空的时候把b表也清空一下。
你现在a表是怎样清空的,通过重新 ...

是通过重新加载,没有用着setData

function search() {
            var combobox_cgdw = mini.get("combobox_cgdw").value;
            var datepicker_kssj = (mini.get("datepicker_kssj").value).getFullYear() + "-" + ((mini.get("datepicker_kssj").value).getMonth() + 1) + "-" + (mini.get("datepicker_kssj").value).getDate();
            var datepicker_jssj = (mini.get("datepicker_jssj").value).getFullYear() + "-" + ((mini.get("datepicker_jssj").value).getMonth() + 1) + "-" + (mini.get("datepicker_jssj").value).getDate();
            var cglszh = "";

            //var selecteds = datagrid_cgdjl.selecteds;
            //alert("1" + selecteds.length);
            datagrid_cgdjl.load({ combobox_cgdw: combobox_cgdw, datepicker_kssj: datepicker_kssj, datepicker_jssj: datepicker_jssj });

            var rows_main = datagrid_cgdjl.getData();
            //var rows_detail = datagrid_cgjhjl.getData();

            if (rows_main.length > 0) {
                alert("1主表有数据");
            }
            else {
                alert("1主表为空");
                if (rows_detail.length > 0) {
                    datagrid_cgjhjl.load({ combobox_cgdw: combobox_cgdw, datepicker_kssj: datepicker_kssj, datepicker_jssj: datepicker_jssj, cglszh: cglszh });
                }
            }

            //if (selecteds.length = 0)
            //{
            //            datagrid_cgjhjl.load({ combobox_cgdw: combobox_cgdw, datepicker_kssj: datepicker_kssj, datepicker_jssj: datepicker_jssj, cglszh: cglszh });

            //}

        }

        function onSelectionChanged(e) {
            var grid = e.sender;
            var selecteds = e.selecteds;
            alert("2" + selecteds.length);
            var record = grid.getSelected();

            var rows = datagrid_cgdjl.getData();

            if (rows.length > 0) {
                alert("2主表有数据");
            }
            else {
                alert("2主表为空");
            }

            var combobox_cgdw = mini.get("combobox_cgdw").value;
            var datepicker_kssj = (mini.get("datepicker_kssj").value).getFullYear() + "-" + ((mini.get("datepicker_kssj").value).getMonth() + 1) + "-" + (mini.get("datepicker_kssj").value).getDate();
            var datepicker_jssj = (mini.get("datepicker_jssj").value).getFullYear() + "-" + ((mini.get("datepicker_jssj").value).getMonth() + 1) + "-" + (mini.get("datepicker_jssj").value).getDate();

            if (record) {
                datagrid_cgjhjl.load({ combobox_cgdw: combobox_cgdw, datepicker_kssj: datepicker_kssj, datepicker_jssj: datepicker_jssj, cglszh: record.cglszh });
            }
        }

作者: felt    时间: 2017-6-16 11:30:14

meriberry 发表于 2017-6-16 11:25
是通过重新加载,没有用着setData

function search() {

那可以这样监听一下datagrid的load事件,有重新加载的话b表就清空
gridA.on("load",function(e){
    gridB.setData([])
})
作者: meriberry    时间: 2017-6-16 12:26:27

felt 发表于 2017-6-16 11:30
那可以这样监听一下datagrid的load事件,有重新加载的话b表就清空
gridA.on("load",function(e){
    gri ...


搞定啦  谢谢
作者: meriberry    时间: 2017-6-16 12:27:31

felt 发表于 2017-6-16 11:30
那可以这样监听一下datagrid的load事件,有重新加载的话b表就清空
gridA.on("load",function(e){
    gri ...


        datagrid_cgdjl.on("load", function (e) {
            var combobox_cgdw = mini.get("combobox_cgdw").value;
            var datepicker_kssj = (mini.get("datepicker_kssj").value).getFullYear() + "-" + ((mini.get("datepicker_kssj").value).getMonth() + 1) + "-" + (mini.get("datepicker_kssj").value).getDate();
            var datepicker_jssj = (mini.get("datepicker_jssj").value).getFullYear() + "-" + ((mini.get("datepicker_jssj").value).getMonth() + 1) + "-" + (mini.get("datepicker_jssj").value).getDate();
            var cglszh = "";

            var rows_main = datagrid_cgdjl.getData();
            var rows_detail = datagrid_cgjhjl.getData();

            if (rows_main.length > 0) {
                alert("1主表有数据");
            }
            else {
                alert("1主表为空");

                if (rows_detail.length > 0) {
                    datagrid_cgjhjl.load({ combobox_cgdw: combobox_cgdw, datepicker_kssj: datepicker_kssj, datepicker_jssj: datepicker_jssj, cglszh: cglszh });
                }
            }
        })
作者: felt    时间: 2017-6-16 16:27:14

meriberry 发表于 2017-6-16 12:27
datagrid_cgdjl.on("load", function (e) {
            var combobox_cgdw = mini.get("combob ...






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