2013-04-24 18 views
0

在我看來我有一個網格(來自KendoUI),我想根據複選框的狀態進行更新。我的想法是,只要點擊某個複選框的值(布爾值)就可以將其發送給我的控制器,然後使用複選框中的bool值作爲參數調用提供我的數據的服務。從那裏,我想刷新已經使用服務調用中的新數據填充我的網格的列表。如何發送基於複選框從視圖到控制器在asp.net中的布爾值

我試過一些ajax調用,但我似乎無法包裹在我的頭周圍。

這裏是我的索引視圖:

<div class="row-fluid"> 
    <div class="span12"> 
     <div class="k-block"> 
      <div class="k-header">Unit List</div> 
      @Html.CheckBox("mycheckbox") 
      @(Html.Kendo().Grid(Model.UnitTypes) 
      .Name("Grid") 
      .Columns(columns => 
       { 
        columns.Bound(p => p.Id).Groupable(false); 
        columns.Bound(p => p.Name); 
        columns.Command(command => { command.Custom("Edit Unit"); }).Width(160); 
       }) 
       .Groupable() 
       .Pageable() 
       .Sortable() 
       .Scrollable() 
       .Filterable() 
       ) 
      } 

     </div> 
    </div> 

這是我的控制器:

public ActionResult Index() 
{ 
    var client = new UnitServiceClient(); 
    var listOfUnitsFromService = client.GetListOfUnits(true); 

    var model = new UnitModel 
        { 
         UnitTypes = listOfUnitsFromService.ToList() 
        }; 
    return View(model); 
} 

希望有人能幫助,因爲我完全空白的,當涉及到AJAX調用:)

+0

我試圖沿着這一線的東西: '$阿賈克斯({ 類型: '後', URL: 「/首頁/索引」, 數據類型: 「文本」, });' 從我的複選框html標記中的「onClick」中調用。就像我說的。沒有關於這個的線索:S – 2013-04-24 14:51:00

回答

2

您將要做的是創建一個控制器操作,該操作接受一個布爾值並返回一個包含網格所有HTML的PartialView。

然後,您的Ajax將調用該控制器操作,傳遞布爾值並從服務器接收網格HTML。然後它會用新的HTML更新包含網格的div。

控制器

[HttpPost] 
public PartialViewResult Blah(bool someFlag) 
{ 
    // Standard controller code. Load a model. Return a PartialView. 
} 

阿賈克斯

$.ajax({ 
    type: "post", 
    dataType: "html", 
    url: '/Home/Blah', 
    data: 'someFlag=' + $('#mycheckbox').val(), 
    success: function (response) { 
     $('#k-block').html(response); 
    }, 
}); 
+0

如果我問,爲什麼一個局部觀點與一個觀點相反? :) – 2013-04-24 19:37:01

+1

儘管你可以返回,但我個人更喜歡PartialView,因爲它表示代碼的意圖,這就是我只是給你一部分HTML,而不是全部。 – 2013-04-24 19:41:49

+0

好的,所以我試過了,網格似乎沒有刷新:(我已經設置了我的複選框來對onClick =「refreshGrid()」做出反應,這反過來又是一個js函數,用上面提到的內容。 – 2013-04-25 08:30:45

0

好了,我發現我的解決方案,至少現在是這樣。 最終將複選框和我的FormsCollection一起傳遞到控制器中,然後根據其「開/關」值進行處理。

我的形式簡單地使用標記的以下行提交:

<input type="checkbox" name="refresh" class="k-checkbox" id="refresh" onclick="document.forms.refreshForm.submit();"/> 

然後,我的風格我行的基礎上,在我的模型中的「禁用」屬性,像這樣:

@(Html.Kendo().Grid(Model.UnitTypes) 
      .Name("Grid") 
      .RowAction(row => 
       { 
        if (row.DataItem.Disabled) 
        { 
         row.HtmlAttributes["style"] = "background-color: LightGray"; 
        } 
       }) 
      .Columns(columns => 
       { 
        columns.Bound(p => p.Id).Groupable(false); 
        columns.Bound(p => p.Name); 
        columns.Bound(p => p.Disabled); 
        columns.Command(command => { command.Custom("Edit Unit"); }).Width(160); 
       }) 
      .Groupable() 
      .Pageable() 
      .Sortable() 
      .Scrollable() 
      .Filterable()) 
相關問題