繁体   English   中英

如何使用Telerik Rad Grid Binding将数据传递给Ajax服务?

[英]How to pass data to an Ajax Service using Telerik Rad Grid Binding?

我有一个Telerik RadGrid,我正在实现对Ajax服务的自定义分页绑定。 如何将搜索字符串等数据传递给Web方法?

Mark up看起来像这样:

 <telerik:RadGrid ID="radGridProviders" runat="server" AllowPaging="True" PageSize="10" AutoGenerateColumns="false" >
    <PagerStyle Mode="NextPrevAndNumeric" />
    <MasterTableView TableLayout="Fixed" >
        <Columns>
            ...
        </Columns>
    </MasterTableView>
    <ClientSettings>
        <Scrolling AllowScroll="True" EnableVirtualScrollPaging="True" UseStaticHeaders="True">
        </Scrolling>
        <DataBinding Location="/AjaxServices/SearchService" SelectMethod="GetProductData" SelectCountMethod="GetProductCount" StartRowIndexParameterName="startRowIndex" MaximumRowsParameterName="maxRows" />
        <ClientEvents OnCommand="showLoadingPanel" OnDataBound="hideLoadingPanel" />
        </ClientSettings>
    </telerik:RadGrid>

我想将搜索字符串和/或其他客户参数传递给我的服务如何使用RadGrid绑定进行操作?

响应请求的服务是ASP.NET MVC控制器。 该服务对来自浏览器的请求做出了很好的响应。 我的问题是我不知道如何使用Telerik绑定功能传递自定义数据。

public class SearchServiceController : Controller
{
    private ISearchController _searchController;

    public SearchServiceController(ISearchController searchController)
    {
        _searchController = searchController;
    }

    public int GetProductCount()
    {
        int returnValue = 0;

        // brevity brevity

        return returnValue ;
    }

    public List<SearchProviders_Result> GetProductData(int startRowIndex, int maxRows)
    {

           // brevity brevity

    }
}

有什么建议么?

这是我在Telerik支持的帮助下找到的。

在RadGrid的ClientSetting中,向ClientEvents OnDataBinding添加一个方法。 在此示例中,我的名称方法名称是OnClientDataBinding

然后创建客户端方法:

            // This OnClient DataBinding builds the arguments uses to call the 
            // Ajax Service used to retrieve that when needed.
            function OnClientDataBinding(sender, args) {

                // get data source location, method name and arguments
                var dataSourceLocation = args.get_location();
                var selectMethodName = args.get_methodName();
                var methodArguments = args.get_methodArguments();

            ...  

我实际上修改了sortExpression和fitlerExpresion,它们作为一个数组传递。

        // construct arguments for Ajax Service
        var myMethodArguments = new Object();
        myMethodArguments.startRowIndex = methodArguments.startRowIndex;
        myMethodArguments.maximumRows = methodArguments.maximumRows;
        myMethodArguments.sortExpression = sortExpression;
        myMethodArguments.filterExpression = filterExpression;
        myMethodArguments.myParam1 = "David";
        myMethodArguments.myParam2 = 14926;

        args.set_methodArguments(myMethodArguments);
    }

然后创建您的服务控制器方法,如:

public JsonResult GetCustomerSearchResults(int startRowIndex, int maximumRows, string sortExpression, FilterExpression[] filterExpression, string myParam1, int myParam2)
    {
        IEnumerable results;

        ... fill your Data and Count. 

        return Json(new { Data = results.ToList(), Count = totalNumberOfRows });
    }

FilterExpression []是我为我创建的对象。 这不是Telerik对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM