2013-05-25 82 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