2016-06-07 47 views
1

綁定劍道網數據我有一個從數據庫中獲取以下結果頁面上劍道下拉列表。我同時也在同一頁面上有一個網格,它需要kendo dropdownlist的值,即從年份dropdownlist的值,但我無法同時得到它。這就是我所追求的。我在哪裏做錯了。與下拉值

<script type="text/javascript"> 

var GridUrl; 

    $("#Years").kendoDropDownList({ 
     dataTextField: "Name", 
     dataValueField: "Id", 

     dataSource: { 
      transport: { 
       read: { 
        dataType: "json", 
        url: "../../Service/GetYears" 

       } 
      } 
     } 
    }); 



    $(document).ready(function() { 
BindGridData(); 
    GridUrl = '@Url.Action("Read", "Home")'; 

}); 

function BindGridData() 
{ 
      GridDataSource = new kendo.data.DataSource({ 
      type: "aspnetmvc-ajax", 
      serverFiltering: true, 
      serverPaging: true, 
      serverSorting: true, 
      pageSize: 10, 
      transport: { 
       read: { 
        url: GridUrl, 
        data: { year: $('#Years').val() } 
       } 
      }, 
      schema: { 
       data: "Data", total: "Total" 
      } 
     }); 
} 

回答

0

更改行此

year: $('#Years').data("kendoDropDownList").value() 

應該做的一招。您需要獲得kendoDropDownListwidget的實例以獲得其價值。您需要這樣做,因爲kendoDropDownListwidget值不會直接保存到html元素中

0

首先,您需要將kendoDropDownList的初始化移動到文檔就緒函數中。如果你不這樣做,你最終可能會引用未加載的元素(還)。

應該做的第二個變化是,你如何讓從kendoDropDownList值。通常,您應該參考小部件而不是DOM元素:$('#Years').data("kendoDropDownList").value()

最後,您沒有提及如何以及何時綁定了網格,但如果用戶更改了下拉值,則可能需要刷新網格數據。如果是這種情況,您可能需要使用下拉菜單中的change事件來刷新網格數據。

$(document).ready(function() { 

    $("#Years").kendoDropDownList({ 
     dataTextField: "Name", 
     dataValueField: "Id", 
     dataSource: { 
      transport: { 
       read: { 
        dataType: "json", 
        url: "../../Service/GetYears" 
       } 
      } 
     }, 
     change: function(e) { 
      $("#YourGrid").data("kendoGrid").dataSource.read(); 
     } 
    }); 

    BindGridData(); 
    GridUrl = '@Url.Action("Read", "Home")'; 

}); 

function BindGridData() { 
    GridDataSource = new kendo.data.DataSource({ 
     type: "aspnetmvc-ajax", 
     serverFiltering: true, 
     serverPaging: true, 
     serverSorting: true, 
     pageSize: 10, 
     transport: { 
      read: { 
       url: GridUrl, 
       data: { year: $('#Years').data("kendoDropDownList").value() } 
      } 
     }, 
     schema: { 
      data: "Data", total: "Total" 
     } 
    }); 
}