0
我已經把一個jsFiddle放在一起,演示了修改數據項時未更改事件。爲什麼在數據項被修改後,KendoUI DataSource更改事件不會引發?
轉到提琴,你會看到一個網格和網格下的一些鏈接。 按順序點擊每個鏈接,您將看到Modify操作確實發生,但不會引發更改事件。當你點擊刷新網格鏈接時,你可以看到修改的確發生了。但是,對於添加/刪除操作,不需要刷新網格,並且還會引發更改事件。
我怎樣才能當DataItem的修改將提出的更改事件?
問候,
斯科特
http://jsfiddle.net/codeowl/GfPDC/108/
出於某種原因,StackOverflow上是說:
標記 「鏈接jsfiddle.net必須由代碼陪同」:
<div id="KendoGrid"></div>
<p> </p>
<ul>
<li><a id="lnkWireUpDataSource" class="link">Wire Up DataSource</a><br /></li>
<li><a id="lnkAddRecord" class="link">Add Record</a></li>
<li><a id="lnkModifyRecord" class="link">Modify Record</a></li>
<li><a id="lnkRefreshGrid" class="link">Refresh Grid</a></li>
<li><a id="lnkRemoveRecord" class="link">Remove Record</a></li>
</ul>
的JavaScript:
var _data = [
{ Users_ID: 1, Users_FullName: 'Bob Smith', Users_Role: 'Administrator' },
{ Users_ID: 2, Users_FullName: 'Barry Baker', Users_Role: 'Viewer' },
{ Users_ID: 3, Users_FullName: 'Bill Cow', Users_Role: 'Editor' },
{ Users_ID: 4, Users_FullName: 'Boris Brick', Users_Role: 'Administrator' }
],
_dataSource = new kendo.data.DataSource({ data: _data });
$('#KendoGrid').kendoGrid({
dataSource: _dataSource,
columns: [
{ field: "Users_FullName", title: "Full Name" },
{ field: "Users_Role", title: "Role", width: "130px" }
]
});
$('#lnkRefreshGrid').click(function() {
$("#KendoGrid").data("kendoGrid").refresh();
});
function dataSourceChange(e,a,b) {
var _data = this.data();
console.log('Change Event Raised | Action: '+e.action+' | Data Length: '+_data.length);
}
function dataSource_error(e) {
console.log('Error Event Raised: '+e.status);
}
$('#lnkWireUpDataSource').click(function() {
_dataSource.bind('change', dataSourceChange);
_dataSource.bind('error', dataSource_error);
_dataSource.fetch();
});
$('#lnkAddRecord').click(function() {
_dataSource.add({ Users_ID: 5, Users_FullName: 'Bert Bird', Users_Role: 'Viewer' });
});
$('#lnkModifyRecord').click(function() {
var _dataItem = _dataSource.at(_dataSource.data().length - 1);
_dataItem['Users_Role'] = 'Administrator';
});
$('#lnkRemoveRecord').click(function() {
var _dataItem = _dataSource.at(_dataSource.data().length - 1);
_dataSource.remove(_dataItem);
});
輝煌!感謝OnaBai,花時間回答我的問題。非常感激。 – user2109254 2013-05-13 23:57:27