[code=JScript][
var commNo = $(".datagrid-row-editing td[field=commodityNo] input[type=text]");
/code]确定只获取到了一条数据~

解决方案 »

  1.   


    的确执行了3 次 ~  如果里面写入 alert( 'test' ); 第一次就弹出一次 ,第二次的时候就弹出 2 次,以此类推~
      

  2.   

    大概看了一下,没有细看。说一下以前用到的一个DHtmlx treeGrid的设计。在treeGrid中会有一个单元格式可以编辑的。
    在点击可编辑的单元格的时候。会有一个 status=0,1,2
    当status=0 是表示进入编辑
    当status=1 是表示可以编辑
    当status=2 是表示编辑完成如果我们进入编辑的时候出发一个函数,有如下代码:if(status==0){
       your_function();
    }希望对楼主有些帮助。
      

  3.   

    火狐下 用firebug打个断点调试下 看代码究竟是怎么走的?
      

  4.   

    easyUI不太好   用ext吧
      

  5.   

    你是怎么调用tree的,没见你的代码。commOfTypesTree这个函数贴出来看看
      

  6.   

       commOfTypesTree 跟这个函数应该没有关系吧 ,如果 用 alert 的话,也同样执行多次~
      

  7.   

    function commOfTypesTree(comeMark){
    $("#types-window").window('open'); $('#commOfTypes').tree({
    checkbox: false,
    url: 'commoditiesTreeAction.action?pId=0',
    animate : true,   //平滑效果
    cascadeCheck : false,   //是否联动
    onlyLeafCheck : false,   //是否只有 "叶" 才显示 checkbox
    onClick:function(node){
    $("#commOfTypes").tree('toggle',node.target);
    },
    onBeforeExpand:function(node,param){
    $('#commOfTypes').tree('options').url = 'commoditiesTreeAction.action?pId='+node.id;
    },
    onDblClick: function(node){
    if (node){
    var children = $('#commOfTypes').tree('getChildren', node.target);
    } else {
    var children = $('#commOfTypes').tree('getChildren');
    }
    var s = '';
    for(var i=0; i<children.length; i++){
    s += children[i].text + ',';
    }

    if( s == ''){
    var totalRow = 0; var detailArray = new Array();
    var detailObject;

    if( '' != comeMark ){
    $(".datagrid-row-editing td[field=commodityNo] input[type=text]").val(node.id); var _tblName = "";

    if( "enterPurchase" == comeMark){
    _tblName = '#' + 'purchaseDetails';
    }else if( ...){
    ...
    }

    //判断选择的商品是否已经存在
    var hasCommodity = isTheSameComm(_tblName, node.id);

    if( hasCommodity == 0 ){
    $(_tblName).datagrid('acceptChanges');
    var lastIndex = $(_tblName).datagrid('getRows').length;
    totalRow = lastIndex;
    for( var rows=0; rows < lastIndex; rows++){
    detailObject = new Object();

    $(_tblName).datagrid('selectRow',rows);  //指定行选中
    var currentRow =$(_tblName).datagrid("getSelected");

    if( "enterPurchase" == comeMark ){
    detailObject = {"commodityId":currentRow.commodityId,...};
    }else if( ...){
    detailObject = {"commodityId":currentRow.commodityId,...};
    }

    if( null != currentRow.commodityId || '' !=currentRow.commodityId ){
    detailArray.push(detailObject);
    }

    $(_tblName).datagrid('unselectRow',rows);    //取消指定行选中

    }

    $(_tblName).datagrid({'url':'getCommodityDetails.action?jsonResult='+$.toJSON(detailArray)+'&totalRow='+totalRow}); $("#types-window").window('close'); }
    }else{
    $("#s-commNo").val(node.id);
    $("#s-commId").val(node.attributes.commodityId);
    $("#types-window").window('close');
    } } }
    });
    }
      

  8.   


    function isTheSameComm(_tblName,_commodityNo){
    var hasComm = 0;
    var checkArray = new Array();        //判断是否出现重复的商品编号
    var cObject;

    var rows = $(_tblName).datagrid('getRows');
    for( var i=0; i < rows.length; i++ ){
    cObject = {"commodityId":rows[i].commodityId,"commodityNo":rows[i].commodityNo};

    if( null != rows[i].commodityId || '' !=rows[i].commodityId ){
    checkArray.push(cObject);
    }
    } if( checkArray.length > 0 ){
    for( var i = 0 ; i < checkArray.length; i++){
    if( _commodityNo == checkArray[i].commodityNo ){
    $.messager.alert('错误提示','不能选择相同的商品!','error',function(){
    var currentRow =$(_tblName).datagrid("getSelected");
    currentRow.commodityNo = '';
    });
    hasComm = 1;
    }
    }
    }

    return hasComm;}
      

  9.   

    你commNo.dblclick代码执行的地点不对,不该在onClickRow中,最好是在beginEdit后执行。或者在onClickRow中也可以,但要先unbind再bind。
    commNo.unbind().dblclick(function(){
    alert('dblclick')
    });
      

  10.   

       恩, 问题解决  , 谢谢 stworthy ~~~
      

  11.   


    这个说到点上了,应该是你多次点击了datagrid的row,绑定了多次事件,导致执行多次commOfTypesTree函数。commNo.unbind('dblclick').dblclick(function(){
                commOfTypesTree('enterSales',rowIndex);//这里是执行双击树叶节点的操作(与弹出树之前没有关系)
                treeIndex = rowIndex;     //保存当前双击的行
            });
      

  12.   

    [code=CSS][/code]http://