Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 将取消标记网格记录标记为脏_Extjs_Grid_Store_Extjs4.1 - Fatal编程技术网

Extjs 将取消标记网格记录标记为脏

Extjs 将取消标记网格记录标记为脏,extjs,grid,store,extjs4.1,Extjs,Grid,Store,Extjs4.1,我们为用户提供了更改网格记录顺序/位置的功能。为此,我们使用拖放。但拖放后,记录不会显示为脏的 因此,是否有任何函数可以用来强制标记或取消标记网格记录为脏记录?也就是说,强制它显示/隐藏角落中的红色标记 我在记录上找到一个函数-setDirty()。但这并没有达到目的。我以前做过顺序拖放网格。我在数据库中有一个sequence列,因此只是将其包含在模型定义中 然后在gridview的drop事件处理程序中,每当执行drop时,我对所有受影响的记录调用record.set('sequence',n

我们为用户提供了更改网格记录顺序/位置的功能。为此,我们使用拖放。但拖放后,记录不会显示为脏的

因此,是否有任何函数可以用来强制标记或取消标记网格记录为脏记录?也就是说,强制它显示/隐藏角落中的红色标记


我在记录上找到一个函数-
setDirty()
。但这并没有达到目的。

我以前做过顺序拖放网格。我在数据库中有一个sequence列,因此只是将其包含在模型定义中

然后在gridview的
drop
事件处理程序中,每当执行drop时,我对所有受影响的记录调用
record.set('sequence',newSequence)
。(我说“所有有效记录”因为每当您更改一条记录的顺序时,它不仅会影响该条记录的顺序(例如:如果您将一条记录从网格的最底部移动到最顶部,则删除的记录之后的所有记录序列号都将增加一,它们都将变脏,需要在数据库中更新)

然后,使用
record.set
将显示记录的序列列已被标记弄脏


你说你有服务器端更新ok,所以我假设你在服务器端执行这个重新排序逻辑,你必须把它移回到JS上,我不知道你是否想这样做。

你的模型包括
索引
属性吗?我相信,当你重新排序时,属性会发生变化,如果在模型中定义,那么模型记录应该在拖放时变脏(无论如何对树都有效)。我认为你应该在
drop
事件上为
DragDrop
插件设置一个侦听器,这样你就可以处理所有与订单相关的变化(将新位置发送到服务器等)@Izhaki:商店里有一个索引,但模型中的索引我还没听说过。你能详细解释一下你所说的吗?@webbandit:谢谢你的帖子。我们可以处理服务器端的更新,但问题是,用户如何知道他更改了某个记录的顺序?如果该记录ets标记为脏然后用户更容易识别记录顺序已更改。对此有什么想法吗?只需在模型中添加一个字段
{name:'index',type:'int'}
,它可能会起作用。通过定义它,ExtJS将监视对它的更改,并在重新排序记录时将任何记录标记为脏记录(同样,这是树的工作方式,我认为这与网格是一样的)。感谢Geronimo。这正是我们一直在做的事情。但是我想,可能还有其他更好的方法来做这件事。看起来,我们必须继续使用旧的和新的顺序的相同逻辑。不过,感谢您的时间。