snaif_lx
snaif_lx
采纳率80%
2015-09-11 07:38

easyui datagrid combobox联动的问题

100
已采纳
        {
            field: 'NMJ04', title: '夫妇姓名', width: 100, sortable: true,
            editor: {type: 'combobox', options: {
                required: true,
                url: '/handler/familyinfo.ashx?flag=treeClubNet&t=4',
                dataType: 'json',
                parentField: 'pid',
                textFiled: 'text',
                valueField: 'id',
                method: 'get',
                lines: true,
                editable: false,
                panelHeight: 130,
                onSelect: function (record) { 
                    var row = $('#dd').datagrid('getSelected');
                    var rowIndex = $('#dd').datagrid('getRowIndex',row);//获取行号
                    var target = $('#dd').datagrid('getEditor', {'index':rowIndex,'field':'NMJ05'});//.target;
                    target.combobox('clear'); //清除原来的数据   
                    var url = '/handler/spouseinfo.ashx?flag=getValueNMK06&t='+record.id;
                    target.combobox('reload', url);//联动下拉列表重载
                    //这里还需要设置一个textbox的值,NMJ06,怎么办?
                },
                panelMaxWidth: 200
            }

            }
        },

NMJ04是姓名,选择了之后自动提出NMJ05(性别)和NMJ06,身份证号码
新增行和编辑行的时候怎么操作啊?
我新增时row的值直接是null,求教求教

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • showbo GoCityPass新加坡曼谷通票 6年前
                     onSelect: function (record) { 
                        var row = $('#dd').datagrid('getSelected');
                        var rowIndex = $('#dd').datagrid('getRowIndex', row);//获取行号
                        //注意这里:获取到的编辑器是个json对象,不是jquery包装的dom对象或者dom对象
                        var target = $($('#dd').datagrid('getEditor', { 'index': rowIndex, 'field': 'NMJ05' }).target);//要转为jquery包装的对象,要不下面那句会报错
                        target.combobox('clear'); //清除原来的数据   
                        var url = '/handler/spouseinfo.ashx?flag=getValueNMK06&t='+record.id;
                        target.combobox('reload', url);//联动下拉列表重载
                        $.ajax({
                            url: '获取NMJ06值的url地址', type: 'POST', data: { id: record.id }, success: function (d) {
                                $($('#dd').datagrid('getEditor', { 'index': rowIndex, 'field': 'NMJ06' }).target).val(d);
                            },
                            error: function (xhr) {
                                alert('动态页有问题。。\n'+xhr.responseText)
                            }
                        });
                    }
    

    编辑时我建议是统一用一个ajax发送请求后,获取所有返回的数据,在success中统一设置,而不是单独设置。

    “我新增时row的值直接是null”,这个不太明白什么意思。。新增的话你的record没有记录,所以你选中新增记录需要动态获取的值肯定是获取不到的,这时需要手动填写才行,或者给combobox默认的值让选中

    点赞 1 评论 复制链接分享
  • snaif_lx snaif_lx 6年前

    up。。。。!!!!

    点赞 评论 复制链接分享
  • tb176 IT丶小农民 6年前

    把你的这段var url = '/handler/spouseinfo.ashx?flag=getValueNMK06&t='+record.id;

    放到ajax中

     $.ajax({
                                    type : 'post',
                                    url : 'handler/spouseinfo.ashx?flag=getValueNMK06&t='+record.id,
                                    cache : false,
                                    dataType : 'json',
                                    success : function(data) {
                                        //在这里反显 
                                    },
                                    error : function(data) {
                                        //$.messager.alert('错误信息',‘错误’,'error'); 
                                        return true;
                                    }
                        });
    
    点赞 评论 复制链接分享
  • tb176 IT丶小农民 6年前

    很简单,onSelect方法里把你选中的的值传到ajax,当作参数查询返回的你需要的值,可以通过data.XX获取,分别放到你需要的文本框中就可以了。

    点赞 评论 复制链接分享
  • xiesq5112 心随自在飞 6年前

    抱歉。很久没接触这个了,同问!

    点赞 评论 复制链接分享

相关推荐