2016-05-31 4 views
0

私は

$('#ExchangeGrid').data('kendoGrid').dataSource.read();を呼び出すことにより、データベース内のデータを更新した後、グリッドを更新する必要があります私は現在のDateTimeが、グリッドとグリッドを更新する必要があり

はDateTimePickerの(中に存在している時に更新している)

私は、現在までの時間を変更できますか?

マイグリッド

@(Html.Kendo().Grid<Internal.Models.ExchangeRateData>() 
.Name("ExchangeGrid") 
.Columns(columns => 
{ 
    columns.Bound(p => p.originCurrencyFormated); 
    columns.Bound(p => p.targetCurrencyFormated); 
    columns.Bound(p => p.rate); 
    columns.Bound(p => p.percentage) ; 
    columns.Command(commands => { commands.Edit(); }); 
    columns.Bound(p => p.adjustedRate) ; 

}) 
.Editable(edit => 
{ 
    edit.Mode(GridEditMode.InLine); 
}) 
.DataSource(dataSource => dataSource 
    .Ajax() 
    .Batch(true) 
    .ServerOperation(false) 
    .Model(model => 
    { 
     model.Id(item => item.targetCurrency); 
    }) 
    .Events(events => 
    { 
     events.RequestEnd("onRequestEnd"); 
    }) 
    .Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData")) 
    .Update(c => c.Action("Currencies_Update", "MyControllor")) 
    ) 
)      

私はグリッド機能 "ReadRequestDataを" 更新 "日付" のこの関数値で

.Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData")) 

と呼ばれているが、コード

function ReadRequestData() { 
    return { 
     "date": $('#dateList').val() 
    }; 
} 
DateTimePickerの

から移入されましたDateTimePickerの場合:

関数onRequestEndの(e)の

function onRequestEnd(e) { 

    if (e.type == "update") { 
     $('#ExchangeGrid').data('kendoGrid').dataSource.read(); 
    } 
} 

ため

@(Html.Kendo().DateTimePicker() 
    .Name("dateList") 
    .Start(CalendarView.Month) 
    .Format("dddd MMMM dd, yyyy H:mm:ss") 
    .Value(DateTime.Now) 
    .Events(e => e.Change("changeDate")) 
) 

コードは、私は、インライン編集した後、いくつかの列を更新する必要がありますが、変更されているのみ自動的に列が更新されます。私はまた、変更された列から計算された列を更新する必要があります。

+0

http://stackoverflow.com/questions/21863449/how-can-i-refresh-the-grid-after-edit-the-kendo-ui-grid –

答えて

1

まず、RequestEndイベントではなくSyncイベントを使用します。また、DataSourceのread()メソッドを呼び出すと、ReadRequestData関数が呼び出され、日付が取得され、ExchangeRate_Readアクションに渡されます。しかし、データが更新された後、その日付は必要ありません。したがって、DateTimePickerをクリアするだけで済みます。

.DataSource(dataSource => dataSource 
    .Ajax() 
    .Batch(true) 
    .ServerOperation(false) 
    .Model(model => 
    { 
     model.Id(item => item.targetCurrency); 
    }) 
    .Events(events => 
    { 
     events.Sync("onSync"); 
    }) 
    .Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData")) 
    .Update(c => c.Action("Currencies_Update", "MyControllor")) 
    ) 
)  

function onSync(e) { 
    $("#dateList").data("kendoDateTimePicker").value(''); 
    $('#ExchangeGrid').data('kendoGrid').dataSource.read(); 
} 

今、あなたのExchangeRate_Readアクションでは、ビューから渡された日付がnullである場合には、現在の日付を使用することができます。

+0

ありがとうございます。私はコントローラの "データ"のコードも追加しました。public ActionResult ExchangeRate_Read(DataSourceRequest)DataSourceRequestリクエスト、文字列currencyName = "usd"、文字列の日付= null) { 。 。 。 if(date == null || date == string.Empty) { DateTime dateNow = DateTime.Now; date = dateNow.ToString(); } –

+0

それで、それは機能しましたか? @фымышонок – ataravati

+0

はい、私はあなたに答えとしてマークしました。 –

関連する問題