簡體   English   中英

Kendo Grid的動態默認值

[英]Dynamic default value for Kendo Grid

我想在我的Kendo Grid中使用auto increment列。 此字段不是服務器端自動增量,因為我希望用戶查看該值並能夠更改它。

我目前的解決辦法是增加一個click屬性, Create了行按鈕,循環找到的最高值,並增加它。

但是如何在新創建的行中插入此值? Click事件在創建新行之前發生。

所以有兩種可能的解決方案:

  1. 將變量作為默認值並在我的JS代碼中更新它。
  2. 以某種方式訪問​​新創建的行,並更新該值。

這是我的JS代碼:

function createClick(id) {
    var grid = $("#" + id).data('kendoGrid');
    var highestRadif = 0;
    grid.tbody.find('>tr').each(function () {
        var dataItem = grid.dataItem(this);
        var radif = dataItem.SRadifReqR;
        highestRadif = highestRadif < radif ? radif : highestRadif;
    })
    alert(++highestRadif);
}

您可以使用Grid的edit事件將新的generatedId值添加到新Grid的model

這是他們的文檔中的一些解釋:

編輯

用戶編輯或創建數據項時觸發。

  • e.container jQuery ,編輯容器元素的jQuery對象,它包裝了編輯UI。
  • e.model kendo.data.Model ,即將被編輯的數據項。 使用其isNew方法檢查數據項是新的(已創建)還是未創建(已編輯)。
  • e.sender kendo.ui.Grid ,觸發事件的小部件實例。

我想你的點擊有這樣的東西

//generate id code
vm.newId = ++highestRadif; // we need to store generated Id
grid.addRow();

然后編輯事件

edit: function(e) {
    var model = e.model; // access edited/newly added model
    // model is observable object, use set method to trigger change event
    model.set("id", vm.newId);
}

注意 :您的模式模型的字段必須設置屬性editable: true ,因為我們可以使用set方法更改模型字段值。 此外,如果您的字段架構需要驗證,則需要將其刪除。

model: {
    id: "ProductID",
    fields: {
        ProductID: { editable: true, nullable: true },
    }
}

樣品

我能夠在數據源模式中放置一個函數。

schema: {
    model: {
        id: "id",
        fields: {
            currencyType: { defaultValue: getDefaultCurrency },
            invoiceDate: { type: "date" }
        }
    }
}

    function getDefaultCurrency() {
        return _.find(vm.currencyTypes, { id: vm.currencyId });
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM