2012-06-15 42 views
1

我們希望使用Orchard作爲網站。我們正在爲該cms創建一個自定義模塊/小部件,並且在該模塊中,我們希望使用DevExpress的GridView來顯示數據。我們大部分工作正常,但我們無法獲得回調。我的意思是像瀏覽頁面,排列行和移動列。Orchard模塊中的DevExpress MVCxGridView - 回調不起作用

如果我們查看控制檯,我們可以看到javascript和ajax回調函數從未執行過,但我們無法弄清楚原因。我已經在DevExpress網站和這個網站上發現了一些關於在Orchard上使用DevExpress的主題,但是我找不到任何有用的東西(在我的情況下)。我們也注意到,我們的控制器的方法從來沒有被調用,但不知道爲什麼不。

我發現有時jQuery可能會導致DevExpress控件出現問題,所以我嘗試刪除所有jQuery腳本,但這並沒有什麼區別。有人還建議圍繞te gridview放置一個callback面板,但這也不起作用。我嘗試了更多的東西(我大多已經忘記了),但迄今爲止沒有任何工作。

我也問過DevExpress website結束Orchard forums的同樣的問題,但我沒有得到任何答案,所以我想我會在這裏嘗試我的運氣。

我做了一個示例項目,以防你想看看我想要做什麼。該文件是40MB,因爲我使用示例數據庫(包括我們的模塊)將整個cms添加到了它。該模塊被稱爲GridViewTest你可以在這裏找到源代碼:http://www.obec.nl/download/Orchard-DevExpress.zip。

回答

2

我終於找到了解決方案。原來是一個非常簡單的(像往常一樣),我想在這裏分享它,以防其他人想使用DevExpress與果園:

在你的果園模塊,你必須創建一個Routes.cs文件(在模塊的根目錄中)。在那裏,你必須補充一點:

using System.Collections.Generic; 
using System.Web.Mvc; 
using System.Web.Routing; 
using Orchard.Mvc.Routes; 

namespace CentralStationDataView 
{ 
    public class Routes : IRouteProvider 
    { 
     public void GetRoutes(ICollection<RouteDescriptor> routes) 
     { 
      foreach (var routeDescriptor in this.GetRoutes()) 
      { 
       routes.Add(routeDescriptor); 
      } 
     } 

     public IEnumerable<RouteDescriptor> GetRoutes() 
     { 
      return new[] 
      { 
       new RouteDescriptor 
       { 
        Priority = 5, 
        Route = new Route(
         "AreaName", 
         new RouteValueDictionary 
         { 
          { "area", "AreaName" }, 
          { "controller", "ControllerName" }, 
          { "action", "ActionName" } 
         }, 
         new RouteValueDictionary(), 
         new RouteValueDictionary 
         { 
          { "area", "AreaName" } 
         }, 
         new MvcRouteHandler()) 
       } 
      }; 
     } 
    } 
} 

可以使AREANAME了,只要你喜歡,沒關係(據我所知)你稱呼它。確保您不要將「Controller」後綴添加到ControllerName。 然後,在您的GridView設置中,您必須添加以下內容: settings.CallbackRouteValues = new {area =「AreaName」,Controller =「ControllerName」,Action =「ViewDataPartial」}; 這些值必須與Routes.cs文件中的值完全相同。 「area」屬性對我來說非常重要,我已經擁有Routes.cs文件和所有內容,但是我沒有;將區域屬性添加到CallbackRouteValues。

解決方案的第二部分是,您必須僅使用部分視圖並僅強調其中的GridView。所以沒有腳本,沒有額外的HTML元素,沒有文字,什麼都沒有。