2013-05-25 111 views
0

我需要更改下拉選擇更改的telerik mvc網格數據源。下面是我目前的觀點,我想用下拉選擇更改網格。動態更改網格數據源

<%@ Page Title="" Language="C#" MasterPageFile="~/ViewMasterPage.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<GateApplication.Models.Gate>>" %> 
<%@ Import Namespace="Telerik.Web.Mvc.UI" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Index 

</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

<div align="left" style="width: 100%"> 
<table><tr> 
<td>Search Form: </td> 
<td><%= Html.Telerik().DropDownListFor(model => ViewData["drpSearch"]) 
         .HtmlAttributes(new { @Style="width:250px" }) 
             .BindTo(new SelectList((List<SelectListItem>)ViewData["drpSearch"], "Text", "Value"))%></td> 
</tr></table> 

</div> 
             <br /> 

    <%= Html.Telerik().Grid(Model) 
     .Name("Grid") 
     .Columns(columns => 
     { 
      columns.Bound(o => o.ID).Visible(false); 
      columns.Bound(o => o.Urgency); 
      columns.Bound(o => o.FullName); 
      columns.Bound(o => o.Email); 
      columns.Bound(o => o.GateSupportedBy); 
      columns.Bound(o => o.FullPhone1).Title("Phone Number"); 
      columns.Bound(o => o.StNstNo).Title("St. and St. No."); 

     }) 

     .DataBinding(dataBinding => 
     { 

      dataBinding.Ajax().Select("AjaxGrid", 
       "Gate").Enabled(true); 
     }) 
       .Scrollable(scrolling => scrolling.Enabled(true)) 
       .Sortable(sorting => sorting.Enabled(true)) 
       .Pageable(paging => paging.Enabled(true).PageSize(10)) 
       .Filterable(filtering => filtering.Enabled(true)) 
       .Groupable(grouping => grouping.Enabled(true)) 
       .Footer(true) 
%> 

</asp:Content> 

回答

-1

你應該考慮改變數據源在運行時選擇的命令。

比方說,例如:

myDatasource.selectcommand="SELECT Username FROM tblUsers" 
GridView1.DataBind() 
+0

問題是,如何從下拉變化事件的Telerik網格上的不同來源獲取數據。你的答案與問題無關。 – HaBo

0

在你的方法下拉更改事件

$("#drpSearch").change(function(){ 
    if(this.value =="your condition"){ 
    //you can try using rebind 
    var grid = $("#Grid").data("tGrid"); 
    //send additional arguments by passing them as a literal JavaScript object 
    grid.rebind({DataFromOtherSource : true}); 
    } 
}); 

你可以返回不同的數據集。

+0

你好,你可以解釋一下嗎?在什麼方法我必須返回數據?我需要從控制器方法返回JSON嗎?什麼是「tGrid」? – chamara

+0

tGrid是telerik網格ID。你不必對它做任何修改。在Gate控制器的AjaxGrid方法中。返回一個不同的列表對象。如果你可以在這裏發佈你的actoin結果,我可以更好地解釋 – HaBo