2011-09-14 12 views
3

私はTelerik RadGridを使用しており、カスタムページングバインディングをAjaxサービスに実装しています。 Webメソッドに検索文字列のようなデータをどのように渡しますか?Telerik Rad Grid Bindingを使用してAjaxサービスにデータを渡す方法は?

<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 

    } 
} 

いずれかの提案がありますか?

答えて

1

これは、私がTelerik Supportの助けを借りて見つけたものです。

RadGridのClientSettingでは、ClientEventsのOnDataBindingにメソッドを追加します。私は実際にsortExpressionとfitlerExpresionを修正し、これらの配列として渡され

  // 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(); 

      ... 

:私の名前のメソッド名は、クライアントのメソッドを作成

この例ではOnClientDataBindingされます。

 // 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オブジェクトではありません。

関連する問題