2011-09-14 56 views
3

我有一個Telerik RadGrid,我正在實現自定義分頁綁定到Ajax服務。如何將搜索字符串等數據傳遞給Web方法?如何使用Telerik Rad Grid綁定將數據傳遞給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添加一個方法。我的名字的方法名是在這個例子中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對象。

相關問題