jQuery MiniUI

标题: grid重复值检查问题 [打印本页]

作者: q123126    时间: 2014-12-19 16:08:38     标题: grid重复值检查问题

        function OnCellEndEdit(e) {
            if ($.trim(e.value) == '') return false;
            var row = grid1.findRow(function(row1) {
                if (row1.barcode.toLowerCase() == e.value.toLowerCase() && grid1.indexOf(row1) != e.rowIndex) return true;
                return false;
            });
         }
这段代码,如只是在grid1里面编辑,能够正常判断。
但是当通过另外一个grid2批量给grid1追加数据之后(数组追加用的数组拼接方式,数据追加成功),grid1的这个文本编辑框就一直在界面上,点击其他列也不能失去焦点。现在定位到了这段代码,删除row1.barcode.toLowerCase() == e.value.toLowerCase() 这段就正常了。miniui已经升级到3.5,还是不行。


作者: felt    时间: 2014-12-19 16:27:43

把你给grid1添加数据的方法贴出来
作者: q123126    时间: 2014-12-19 16:36:47

felt 发表于 2014-12-19 16:27
把你给grid1添加数据的方法贴出来

                var rows = grid2.getSelecteds();
                var rows1 = grid1.getData();
                var totalRows = rows1.concat(rows);
                grid1.setData(totalRows);
作者: felt    时间: 2014-12-19 16:47:04

q123126 发表于 2014-12-19 16:36
var rows = grid2.getSelecteds();
                var rows1 = grid1.getData();
     ...

复用数据请克隆一下
var newRows=mini.clone(rows)
这样试一下
作者: q123126    时间: 2014-12-19 17:09:59

本帖最后由 q123126 于 2014-12-19 17:13 编辑
felt 发表于 2014-12-19 16:47
复用数据请克隆一下
var newRows=mini.clone(rows)
这样试一下

改成这样也不行。
                var rows = grid1.getData();
                var rows1 = grid2.getSelecteds();

                var newRows1 = mini.clone(rows1);
                var newRows = mini.clone(rows);

                var totalRows = newRows1.concat(newRows);

                grid1.setData(totalRows);

发现规律是这样的,如果点击文本框最后的那个清空按钮(IE11),让文本框变成空,就可以失去焦点了,不然就不行。然后下一个也是要这样。

作者: felt    时间: 2014-12-19 17:12:32

q123126 发表于 2014-12-19 17:09
改成这样也不行。
                var rows = grid1.getData();
                var rows1 = grid2.get ...

那做个重现问题的简单html页面发上来
作者: q123126    时间: 2014-12-19 17:13:57

本帖最后由 q123126 于 2014-12-19 17:18 编辑
felt 发表于 2014-12-19 17:12
那做个重现问题的简单html页面发上来

发现规律是这样的,如果点击文本框最后的那个清空按钮(IE11),让文本框变成空,就可以失去焦点了,不然就不行。然后下一个也是要这样。

问题定位到更加准确了。
row1.barcode == e.value改成这样也没有问题,变成小写就会出问题,我再测试一下。

作者: felt    时间: 2014-12-19 17:21:43

q123126 发表于 2014-12-19 17:13
发现规律是这样的,如果点击文本框最后的那个清空按钮(IE11),让文本框变成空,就可以失去焦点了,不然就 ...

是不是数据问题,你的row1.barcode不是字符串啊
作者: q123126    时间: 2014-12-19 17:23:58

felt 发表于 2014-12-19 17:21
是不是数据问题,你的row1.barcode不是字符串啊

肯定是字符串,但是这个字符串是类似1234567。不知道是不是这里的问题。
我刚 typeof(row.barcode) 是string。
现在用这个
$.trim(row1.barcode).toLowerCase()
竟然可以了,我竟无言以对。。。
作者: q123126    时间: 2014-12-19 17:29:42

felt 发表于 2014-12-19 17:21
是不是数据问题,你的row1.barcode不是字符串啊

[attach]5687[/attach]这个最重要的问题解决了,现在问一个界面显示的问题吧。有的表格列之间的分割线没有了,但是鼠标放上去还能看到可以拉动的标识,拉一下又看到了。宽度是自动宽度。
作者: felt    时间: 2014-12-19 17:32:32

q123126 发表于 2014-12-19 17:29
这个最重要的问题解决了,现在问一个界面显示的问题吧。有的表格列之间的分割线没有了,但是鼠标放上去还 ...

提供个简单页面重现问题,另外是什么浏览器
作者: q123126    时间: 2014-12-19 17:46:25

本帖最后由 q123126 于 2014-12-19 17:48 编辑
felt 发表于 2014-12-19 17:32
提供个简单页面重现问题,另外是什么浏览器

就一个简单的查询显示,在加载页面的时候是正常的,但是查询数据之后,就合并了。
  1.             <div id="datagrid2" url="/Handler/Util/BillSearch.ashx" class="mini-datagrid" style="width: 100%;
  2.                 height: 100%;" showpager="false" allowcellwrap="true"
  3.                 virtualscroll="true">
  4.                 <div property="columns">
  5.                     <div type="indexcolumn" width="50px">
  6.                     </div>
  7.                     <div field="goodsmove_date" dateformat="yyyy-MM-dd" headeralign="center" align="center">
  8.                         日期</div>
  9.                     <div field="goodsmove_no" headeralign="center" align="center">tt</div>
  10.                     <div field="shop_name" headeralign="center" align="center">yy</div>
  11.                 </div>
  12.             </div>

  13. 按钮事件代码:
  14.             $('#btnOKSearch').click(function() {
  15.                 var param = {
  16.                     bill_type: 'goodsmove',
  17.                     datemin: $('#txtbegin_date').val(),
  18.                     datemax: $('#txtend_date').val(),
  19.                     move_type: $('#cbmove_type').val(),
  20.                     empl_no: $('#cbempl_no1').val(),
  21.                     barcode: $('#txtbarcode').val(),
  22.                     oldbarcode: $('#txtoldbarcode').val()
  23.                 }
  24.                 grid2.load(param);
  25.             });
复制代码
这个是从项目里面提取出来的(IE 11),现在确实没时间去做一个简单页面重现。不知道这样能看出问题不。

作者: q123126    时间: 2014-12-19 18:04:48

felt 发表于 2014-12-19 17:32
提供个简单页面重现问题,另外是什么浏览器

jquery 用的是1.4.2,跟这个有关系吗.
作者: dforce    时间: 2014-12-22 09:28:04

q123126 发表于 2014-12-19 18:04
jquery 用的是1.4.2,跟这个有关系吗.

本地ie11未重现你的问题,你页面的doctype完整吗
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
作者: q123126    时间: 2014-12-22 10:11:33

dforce 发表于 2014-12-22 09:28
本地ie11未重现你的问题,你页面的doctype完整吗

是完整的,在未加载数据之前都是正常的。
url="XXX"
把这个属性删除掉,就正常,查询也正常,但是不管是直接在表格里面加url,还是setUrl结果都是导致表格某2列合并。而且合并列不确定,把合并的2列删除掉,那么剩下的其中2列又会合并。
作者: q123126    时间: 2014-12-22 10:28:45

本帖最后由 q123126 于 2014-12-22 10:33 编辑
dforce 发表于 2014-12-22 09:28
本地ie11未重现你的问题,你页面的doctype完整吗

经测试,把列的 align="center"删除掉,就是正常的。
查询的时候,如果有滚动条出现,表格会往左让出滚动条的宽度,其他列对应的就要变窄。不知道是不是这里导致的。
作者: q123126    时间: 2014-12-22 10:55:20

dforce 发表于 2014-12-22 09:28
本地ie11未重现你的问题,你页面的doctype完整吗

我前面的测试不对,我原来给序号列设置了宽度,把这个宽度取消掉就可以了。其他align可以保留。
作者: dforce    时间: 2014-12-22 12:02:32

q123126 发表于 2014-12-22 10:55
我前面的测试不对,我原来给序号列设置了宽度,把这个宽度取消掉就可以了。其他align可以保留。 ...

按你说的做了多个例子,均未重现
能不能提供个简单例子,数据用静态的实现一下?
作者: q123126    时间: 2014-12-22 14:18:30

dforce 发表于 2014-12-22 12:02
按你说的做了多个例子,均未重现
能不能提供个简单例子,数据用静态的实现一下? ...

[attach]5697[/attach]jquery是1.4.2,miniui是最新了,就这个代码,去掉indexcolumn的width或者设置window的宽度为100%都能解决问题。因为我项目里面这个windows是模式窗体,所以设置了宽度和高度。

作者: dforce    时间: 2014-12-22 15:51:50

q123126 发表于 2014-12-22 14:18
jquery是1.4.2,miniui是最新了,就这个代码,去掉indexcolumn的width或者设置window的宽度为100%都能解 ...

[attach]5699[/attach][attach]5698[/attach]
未发现问题


作者: q123126    时间: 2014-12-22 16:48:29

dforce 发表于 2014-12-22 15:51
未发现问题

哦,是兼容模式的问题,设置为非兼容模式确实没问题。但是我们其他功能需要兼容模式,所以这个现在也只能这样处理了。
作者: dforce    时间: 2014-12-22 16:58:34

q123126 发表于 2014-12-22 16:48
哦,是兼容模式的问题,设置为非兼容模式确实没问题。但是我们其他功能需要兼容模式,所以这个现在也只能 ...

MiniUI
IE只支持标准模式
请使用标准模式




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