2016-03-29 12 views
0

私は、データのグリッドを表示するためにknockoutjs kogridを使用し始めたAsp.Net MVC Webサイトを持っています。KO Gridは編集したセルからデータを保存できません - Plunker

特定のグリッドでは、ユーザーが電子メールアドレスの列を編集できるようにしたいと考えています。保存ボタンをクリックすると、編集した値はデータベースに保持されます。

私はグリッドを表示することができ、ユーザーは必要なセルに入力できる行を選択することができます。私の問題は、を参照する方法を見つけ出していないことです。セル値を変更しました。 [$ data.field]がデータベースからロードされた値を選択するための素晴らしいですが、私を与えるものではありません

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:ここ

は私のグリッドオプションの定義です編集された値Save to Databaseボタンがクリックされたときに実行されるjsコードにブレークポイントを設定すると、編集した値がWorkflowRules.TargetEmailAddressに表示されますが、バインド方法はわかりません。 https://plnkr.co/edit/Ibc0WZwyb4melgNDzcUo

誰もが、私は私のemailCellTemplateを設定する必要がどのようにアドバイスしてくださいでした:

私はここで説明するのに役立つplunkを作成していますか?

+0

がどのように変更されたデータを使用したいですか?あなたは 'vm.workflowRules()'で見つけることができます –

+0

あなたのリンクの例では、 'vm is defined'エラーがあります。 –

答えて

0

コメントのおかげで、私は今バグの原因を追跡しました。

問題は私のjavascriptコントローラの私のsavetoDatabaseの機能にありました。コントローラはobserveable this.workflowRules = ko.observableArray(vm.WorkflowRules);を定義したが、前にこの問題を解決するために、サーバ・コントローラvar jsSaveModel = ko.toJS(vm);

を呼び出すJSONに変換するとき、それはサーバビューモデルを使用saveToDatabase関数内で、Iは、を更新するために余分な行を追加しましたJSONに変換する前に、観察の内容とVMの配列をWorkflowRulesので、私は今

vm.WorkflowRules = this.workflowRules(); 
var jsSaveModel = ko.toJS(vm); 
関連する問題