在将网格线发布到服务器
时我需要帮助解决以下问题在我的ExtJs(6.0.1)应用程序中,我有Grid with Store(Ext.data.Store)和Model定义。我在模型中有字段定义。模型中为网格线定义的字段数小于从服务器返回的字段/列。我只包含了必须在Grid中显示的字段定义。
数据成功加载到Grid中,没有任何问题。但是,在发布数据时,即在编辑后保存网格线,我注意到,提交的列/字段不属于模型中字段定义的一部分。我不希望这样,我只想提交在Model中定义的那些列/字段。我认为,当在Grid中加载数据时,模型定义被修改为包括从服务器返回的额外列。
任何人都可以,请说明为什么会这样?
另一个问题是,如果我使用POPUP窗口编辑网格中的任何一个列值,它会更新其他字段的值,这些字段是空字符串或0.对于这些字段,值被设置为null,在服务器端导致异常,因为它期望空字符串或0,而是获得NULL。
我尝试了很多替代品,但没有成功。请帮助!!!
答案 0 :(得分:0)
这种情况正在发生,因为Sencha以性能原因为由决定。在ExtJS 4.x中,模型是必需的,必须保持最新。如今,它只被视为一个宽松的准则。如果您希望不向服务器提交额外的字段(好吧,服务器可以安全地忽略这些发布的值...),您必须明确地将它们添加到模型中并添加persist:false
。
如果我将数据加载到网格中,并使用loadRecord
和updateRecord
使用表单在弹出窗口中编辑记录,则不会覆盖没有相应表单字段的值。另一方面,如果使用getData
和setData
,则会覆盖这些值。这是设计使然,因为getData
/ setData
用于原始处理,而loadRecord
/ updateRecord
用于记录编辑。