easyui datagrid combobox联动的问题
        {
            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个回答

                 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默认的值让选中

snaif_lx
snaif_lx 解决了,我通过以下方法搞定了,感谢各位: var rows = $('#dd').datagrid("getSelections"); //获取当前选择的行 var indexs = datagrid.datagrid("getRowIndex", rows[0]); //得到当前选择的第一行的行号 var ed = $('#dd').datagrid('getEditor', {index:indexs,field:'NMJ03'}); //获取NMJ03列的对象 var ad= $(ed.target).combobox('getValue').toString(); //获取对象的值
大约 4 年之前 回复
showbo
支付宝加好友偷能量挖 回复snaif_lx: 你没有传递行号啊。。var ets = $('#dd').datagrid('getEditors',{index:正在编辑的数据行下标});
大约 4 年之前 回复
snaif_lx
snaif_lx var ets = $('#dd').datagrid('getEditors');,我alert出来的值是空白的
大约 4 年之前 回复
snaif_lx
snaif_lx 感谢版主,我通过editRow得到当前行号了,但是还是之前问你的那个问题又来了,现在提交的时候我要判断他是否选择了姓名,怎么去判断啊?
大约 4 年之前 回复
showbo
支付宝加好友偷能量挖 回复snaif_lx: 没有问题啊,什么版本的easyUI。我这里最新1.4.3没有问题,新添加的行getRowIndex可以得到新增数据行下标
大约 4 年之前 回复
snaif_lx
snaif_lx 回复showbo: 老大,问题是现在我在新增记录时,row直接获取到的是null值,显示未选中行,导致rowIndex的值直接为-1,所有后面的操作就都不行了
大约 4 年之前 回复
showbo
支付宝加好友偷能量挖 回复snaif_lx: 你的性别,身份证这种直接回传到客户端不就好了,不需要联动啊。又不是省市联动什么的,市的数据量比较大可以用ajax联动(就是combobox的reload),联动示例:http://www.coding123.net/article/20140903/easyui-combobox-cascade-select-demo.aspx
大约 4 年之前 回复
showbo
支付宝加好友偷能量挖 回复snaif_lx: $.ajax({url:'获取数据的地址',type:'POST',data:{id:record.id},dataType:'JSON',success:function(d){$($('#dd').datagrid('getEditor',{'index':rowIndex,'field':'NMJ05'}).target).combobox('setValue',d.NMJ06);$($('#dd').datagrid('getEditor',{'index':rowIndex,'field':'NMJ06'}).target).textbox('setValue',d.NMJ06);},error:function(xhr){alert('动态页有问题。。\n'+xhr.responseText)}});
大约 4 年之前 回复
showbo
支付宝加好友偷能量挖 回复snaif_lx: url可以一样,但是参数你要传递不一样的,这样动态页获取到参数后依据参数内容获取不同的内容返回。或者和我说的,一次ajax请求返回所有数据后再统一设置。如返回{"NMJ06":"NMJ06的值","NMJ05":"NMJ05的值"},还有继续添加到返回值里面,一次ajax就可以获取所有数据后设置客户端的编辑器的内容。
大约 4 年之前 回复
snaif_lx
snaif_lx F12显示 cannot read property target of null
大约 4 年之前 回复
snaif_lx
snaif_lx var url= '/... 和下面的$.ajax({ url: ,这两个url有什么区别?都填写一样的内容吗
大约 4 年之前 回复
snaif_lx
snaif_lx combobox有默认值的,{"id":0,"text":"请选择"}
大约 4 年之前 回复
snaif_lx
snaif_lx 新增行的时候,row得到的是null,rowIndex得到的是-1
大约 4 年之前 回复
snaif_lx
snaif_lx var row = $('#dd').datagrid('getSelected'); alert(row); var rowIndex = $('#dd').datagrid('getRowIndex', row);//获取行号 alert(rowIndex);
大约 4 年之前 回复
snaif_lx
snaif_lx var row = $('#dd').datagrid('getSelected'); alert(row); var rowIndex = $('#dd').datagrid('getRowIndex', row);//获取行号 alert(rowIndex);
大约 4 年之前 回复
snaif_lx
snaif_lx var row = $('#dd').datagrid('getSelected'); alert(row); var rowIndex = $('#dd').datagrid('getRowIndex', row);//获取行号 alert(rowIndex);
大约 4 年之前 回复

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

把你的这段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;
                                }
                    });

up。。。。!!!!

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!