0

ストアに新しいアイテムを追加するときに道場グリッドの問題で立ち往生しています。私が持っている :

  1. 記事を含む dojox/grid/EnhancedGrid
  2. タブが記事のファミリーを表す tabcontainer。

タブを選択するたびに、グリッドがフィルタリングされてそのファミリが表示されます。これまでのところ、すべて正常に機能しています。

しかし、新しいウィンドウから新しい記事をグリッドに追加できるボタンがあります。グリッドがフィルタリングされていない場合は問題ありませんが、タブを選択した場合はエラーが発生します: grid assertion failed in itemwritestore FF と IE で同じエラーが発生しました。


私のコードが役立つ場合...

                var grid=parent.registry.byId('lagrid');
        var items=lagrid.store._arrayOfAllItems;
        var item=items[e.rowIndex];
        var lestab=parent.registry.byId( 'TabContainerRayon');
        var tabsel=lestab.selectedChildWidget.id
        var ongletR=tabsel.substring(1,tabsel.length);
        if (grid)
        {
            var storeParent=grid.store;
            var itemsParent=storeParent._arrayOfAllItems;
            for (i=0 ; i< itemsParent.length ; i++)
            {
                if (itemsParent[i].col17==idLigne)
                {
                     alert("Article déjà présent");
                    return false;
                }
            }
            var myNewItem = {
            id: grid.rowCount+1,
            col2:trim(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"Col5")),
            col3:undefined,
            col4:undefined,
            col5:trim(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"Col6")),
            col6:trim(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"Col8")),
            col7:undefined,
            col8: undefined,
            col9: undefined,
            col10: 1,
            col11: undefined,
            col12:trim(lagrid.store.getValue(lagrid.getItem(tabInd[0]),"Col1")),
            col13:trim(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"Col2")),
            col14:'<A HREF="javascript:addProduit('+ (grid.rowCount)+');" ><IMG border=0 SRC="/'+CheminBase+'/Flag_White.gif"></A>' ,
            col15: ongletR,
            col16:"<a href=\"javascript:afficheImg("+grid.rowCount+",'"+trim(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"unid"))+"')\"><img src='/" + CheminBase + "/pictures.png?OpenImageResource' border=0></a>",
            col17:idLigne ,
            col18:trim(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"Col9"))
            };

            parent.PctPrixTolere.push(parseInt(lagrid.store.getValue(lagrid.getItem(e.rowIndex),"Col7")));
            parent.PresenceReleve.push("0");
}
        // ajoute l'item dans le store
        grid.store.newItem(myNewItem);
        grid.store.save();
        parent.registry.byId('external').hide();

ご協力いただきありがとうございます

4

1 に答える 1

0

わかりました、つまりデバッガーのおかげで最終的に間違いを見つけました:)実際、新しいアイテムを識別するためにgrid.rowCount + 1を使用していましたが、タブをクリックすると、ストアよりも常に行が少なくなります=>同じID既存の行 => アサーションが失敗しました。それをgrid.store._arrayOfAllItems.lengthに変更したところ、正常に動作しました:)

于 2013-07-12T14:28:29.147 に答える