2016-07-27 66 views
0

我使用的劍道UI的ListView與SignalR我的ASP.Net MVC應用程序,如下代碼示例:如何通過參數傳遞讀取Kendo ui listview與SignalR的方法?

CSHTML代碼:

@(Html.Kendo().ListView<TestApp.Models.testViewModel>() 
     .Name("LVTest") 
     .TagName("div") 
     .ClientTemplateId("templateTest") 
     .DataSource(dataSource => dataSource 
      .SignalR() 
      .Transport(tr => tr 
        .Promise("hubStart") 
        .Hub("testHub") 
        .Client(c => c.Read("test_Read")) 
        .Server(s => s.Read("test_Read")) 
        ) 
      .Schema(schema => schema 
        .Model(m => { m.Id(p => p.Id); }) 
       ) 
      ) 
     ) 

HUB代碼:

public IEnumerable<TestViewModel> Test_Read(string CurrencyId) 
    { 
     var queryResult = TestRepository.Test_Read(CurrencyId); 
     return queryResult; 
    } 

我想將CurrencyId作爲參數傳遞給此處的讀取方法。我可以通過使用數據源的.Data方法來實現這一點,以實現Ajax綁定,但需要通過控制SignalR來實現。我如何將參數傳遞給讀取方法herre?

+0

你看到了嗎? http://www.telerik.com/forums/how-to-pass-parameter-to-grid-signalr-read-data-source-method –

+1

我已經看過這個論壇,並檢查了在這裏給出的演示,但它是爲在讀取方法獲取數據後過濾掉數據。在我的情況下,我需要傳遞給read方法的具體值,並根據傳遞給read方法的參數,數據將被提取並顯示給listview控件。 – giparekh

+0

你有沒有爲這個解決方案? – werdsackjon

回答

0

發現使用parameterMap的如下解決方案:

CSHTML代碼

<script> 
function customParameterMap(data, operation) { 
    var selectedEmpId = $("#ddlEmp").data("kendoDropDownList").value(); 
    if (operation === "read") { 
     data.selectedEmpId = selectedEmpId; 
    } 
    return data; 
} 

@(Html.Kendo().ListView<TestApp.Models.testViewModel>() 
    .Name("LVTest") 
    .TagName("div") 
    .ClientTemplateId("templateTest") 
    .DataSource(dataSource => dataSource 
     .SignalR() 
     .Transport(tr => tr 
       .ParameterMap("customParameterMap") 
       .Promise("hubStart") 
       .Hub("testHub") 
       .Client(c => c.Read("test_Read")) 
       .Server(s => s.Read("test_Read")) 
       ) 
     .Schema(schema => schema 
       .Model(m => { m.Id(p => p.Id); }) 
      ) 
     ) 
    ) 

HUB代碼

public class ReadRequestData 
{ 
    public string selectedEmpId { get; set; } 
} 

public IEnumerable<TestViewModel> Test_Read(ReadRequestData data) 
{ 
    string EmpId = data.selectedEmpId; 
    var queryResult = TestRepository.Test_Read(EmpId); 
    return queryResult; 
}