自己实现SmartClient的ListGrid保存数据
不知道是不是因为我下载的是LGPL版本,所以无法使用SmartClient Server Framewrok.[http://smartclient.com/product/]
至少我现在只能认为, 我很难调用自己的方法, 然后保存自己的数据.
今天弄了一整天ListGrid, 才发现一些不是咱们常规的思路.
比如ListGrid里面提供了几个方法:
ListGrid.getAllEditRows() Returns an array of every rowNum for which we have pending (unsubmitted) edits. This will return records that have been marked as removed (see ListGrid.markRecordRemoved() as well as records with unsaved changes to field values.
这也不是我们想要的,而且我也看到只返回当前被选中的行号,组成的一个数组而已.
ListGrid.saveAllEdits ([rows, saveCallback]) Returns: type: Boolean - true if a save has been initiated (at least one row had changes, passed client-side validation, and a save has been attempted). False otherwise 这也不是我想要的.
我想要的是:自己去实现ListGrid的一些方法, 使得我在其他控件上操作, 就会调用到这些方法, 来做自己想做的事情.
比如我去实现了save的方法, 然后我在外面调用这个方法, 然后就能自己绕开DataSource(这个可不是免费的,DMI也不是免费的.),去自己保存数据库.
搞了一天很郁闷..........
最后发现了一个窍门:
首先给一个方法:
function gridCellOnChanged(record, newValue, oldValue, rowNum, colNum, grid){alert(JSON.stringify(record));//这里record就是当前被操作的那条记录值,是被操作之后的记录值.//在这里做一些操作,然后保存到某些地方.........//方便自己使用.}
cellChanged:"gridCellOnChanged(record, newValue, oldValue, rowNum, colNum, grid)"
isc.IButton.create({ ID:"update", title:"Update", width:100, name:"update", click:"myGrid.endEditing();alert('satart');myGrid.saveAllEdits();alert('end');"//这里是同步的,所以我们可以在alert('end')的地方自己实现Save.});