我们想将Orchard用于网站。我们正在为该cms创建一个自定义模块/小部件,在该模块中,我们希望使用DevExpress的GridView来显示数据。我们大部分都在工作,但我们无法让回调工作。我的意思是浏览页面,排序行和移动列。
如果我们查看控制台,我们可以看到javascript和ajax回调永远不会被执行,我们无法弄清楚为什么会这样。我在DevExpress网站和本网站上发现了一些关于在Orchard中使用DevExpress的主题,但我找不到任何有用的(对于我的情况)。我们还注意到我们的控制器的方法从未被调用过,但是无法弄清楚为什么不这样做。
我发现有时jQuery会导致DevExpress控件出现问题,所以我尝试删除所有jQuery脚本,但这没有什么区别。有人还建议在te gridview周围放置一个回调面板,但这也不起作用。我已经尝试了很多东西(我大多已经忘记了)但到目前为止没有任何工作。
我也在DevExpress website结束Orchard forums问了同样的问题,但我没有得到任何答案,所以我想我会在这里试试运气。
我已经做了一个示例项目,以防你想看看我想要做什么。该文件为40MB,因为我使用示例daabase将整个cms添加到其中,包括我们的模块。该模块名为GridViewTest。您可以在此处找到源代码:http://www.obec.nl/download/Orchard-DevExpress.zip。
答案 0 :(得分:2)
我终于找到了解决方案。事实证明这是一个非常简单的(像往常一样),我想在这里分享,以防其他人想在Orchard使用DevExpress:
在Orchard模块中,您必须创建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文件和所有内容,但我没有将area属性添加到CallbackRouteValues。
解决方案的第二部分是你只需要制作一个局部视图,我只需要在其中强调GridView。所以没有脚本,没有额外的html元素,没有文本,没有。