2016-03-29 20 views
0

Verilerin ızgaralarını görüntülemek için knockoutjs kogrid'i kullanmaya başladığım bir Asp.Net MVC web sitesine sahibim.KO Düzenlenen hücreden veri kaydedemedi - Plunker ile

Belirli bir ızgara için, kullanıcının bir E-posta Adresi sütununu düzenleyebilmesini isterim. Bir kaydetme düğmesine tıklandığında, düzenlenen değer bir veritabanına devam etmelidir.

Izgarayı tam olarak sunabiliyorum ve kullanıcının gerekli hücreye yazabileceği bir satır seçebiliyorum. Benim sorunum, hücre değerinin nasıl değiştirileceğini anlayamadım. İşte

benim ızgara seçenekleri için tanımı şöyledir:

var emailCellTemplate = '<div><input type=\"text\" data-bind=\"visible: $parent.selected(), value: $parent.entity[$data.field]" /><span data-bind=\"visible: !$parent.selected(), text: $parent.entity[$data.field]\"></span></div>' 
this.gridOptions = { 
    height: 200, 
    afterSelectionChange: function() { return true; }, 
    data: self.workflowRules, 
    enablePaging: true, 
    pagingOptions: self.pagingOptions, 
    filterOptions: self.filterOptions, 
    selectWithCheckboxOnly: true, 
    selectedItems: self.selected, 
    canSelectRows: true, 
    displaySelectionCheckbox: true, 
    columnDefs: [{ field: 'ReceivePortName', displayName: 'Receive Port', width: 130 }, 
       { field: 'MessageType', displayName: 'Message Type', width: 400 }, 
       { field: 'TriggerSource', displayName: 'Source', width: 150 }, 
       { field: 'TargetEmailAddress', displayName: 'Email', width: 180, cellTemplate: emailCellTemplate }, 
       { field: 'AssignedToName', displayName: 'Assigned To', width: 140 }, 
    ] 
}; 

$ parent.entity [$ data.field] veritabanından yüklendi ama bana vermez değerini seçmek için mükemmeldir düzenlenmiş değer. Veritabanına Kaydet düğmesine tıklandığında çalışan js koduna bir kesme noktası yerleştirdiğimde, düzenleme değerini WorkflowRules.TargetEmailAddress'da görebiliyorum, ancak nasıl bağlanacağını anlayamadım. https://plnkr.co/edit/Ibc0WZwyb4melgNDzcUo

kimse benim emailCellTemplate ayarlamanız gerekir nasıl tavsiye eder misiniz:

Burada açıklamaya yardımcı bir Düşmek oluşturduk?

+0

nasıl değişti veri kullanmak istiyorsunuz var? Vm.workflowRules() 'de bulabilirsiniz –

+0

Örnek linkinizde vm tanımlanmamış bir hata var. –

cevap

0

Yorumlarınız için teşekkürler, hatanın nedenini takip ettim.

Sorun, javascript denetleyicimin savetoDatabase işlevinde idi. denetleyici observeable this.workflowRules = ko.observableArray(vm.WorkflowRules); tanımlar mi ama önceden düzeltmek için, bir sunucu kontrol var jsSaveModel = ko.toJS(vm);

çağrı JSON dönüştürürken SaveToDatabase işlev içinde sunucu görünüşüdür modeli kullanılmış, I güncelleştirmek için ek bir satır ilave JSON için dönüştürmeden önce gözlemlenebilir içeriğiyle vm ait dizisi WorkflowRules, ben şimdi

vm.WorkflowRules = this.workflowRules(); 
var jsSaveModel = ko.toJS(vm); 
İlgili konular