【问题标题】:Change Grid datasource dynamically动态更改网格数据源
【发布时间】:2013-05-25 13:31:25
【问题描述】:

我需要在下拉选择更改时更改 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>

【问题讨论】:

    标签: asp.net asp.net-mvc telerik telerik-mvc


    【解决方案1】:

    在下拉更改事件时

    $("#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});
        }
    });
    

    在您的方法中,您可以返回不同的数据集。

    【讨论】:

    • 你好。你能解释一下吗?我必须以什么方法返回数据?我需要从控制器方法返回 JSON 吗?什么是“tGrid”?
    • tGrid 是 Telerik 网格 ID。您不必对其进行任何更改。在 Gate 控制器中的 AjaxGrid 方法中。返回一个不同的列表对象。如果你可以在这里发布你的actoinresult,我可以更好地解释
    【解决方案2】:

    您应该考虑在运行时更改 datasource 选择命令。

    比如说:

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

    【讨论】:

    • 问题是,如何在下拉更改事件中从 Telerik 网格上的不同来源获取数据。您的回答与问题无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 2013-01-12
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多