1

ウェブサイトにオーチャードを使いたい。そのcms用のカスタムモジュール/ウィジェットを作成しており、そのモジュールでDevExpressのGridViewを使用してデータを表示します。ほとんどは機能しましたが、コールバックを機能させることができません。つまり、ページ内を移動したり、行を並べ替えたり、列を移動したりすることです。

コンソールを見ると、javascriptとajaxのコールバックが実行されていないことがわかりますが、その理由を理解することはできません。私はDevExpressサイトとこのサイトでOrchardでのDevExpressの使用に関するいくつかのトピックを見つけましたが、それらの中で(私の場合)有用なものは何も見つかりませんでした。また、コントローラーのメソッドが呼び出されないことにも気づきましたが、その理由を理解することはできません。

jQueryがDevExpressコントロールに問題を引き起こすことがあることがわかったので、すべてのjQueryスクリプトを削除しようとしましたが、違いはありませんでした。誰かがグリッドビューの周りにコールバックパネルを配置することも提案しましたが、それも機能しませんでした。私はもっ​​とたくさんのことを試しましたが(私はほとんどすでに忘れていました)、今のところ何もうまくいきませんでした。

また、 DevExpressのWebサイトでOrchardフォーラムの最後に同じ質問をしましたが、そこで回答が得られないので、ここで運試しをしようと思いました。

私がやろうとしていることを見たい場合に備えて、サンプルプロジェクトを作成しました。モジュールを含むdaabaseの例を使用して、cms全体をファイルに追加したため、ファイルは40MBです。このモジュールはGridViewTestと呼ばれます。ソースはhttp://www.obec.nl/download/Orchard-DevExpress.zipにあります。

4

1 に答える 1

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は好きなように作成できますが、(私が知る限り)何と呼んでも構いません。ControllerNameに「Controller」サフィックスを追加しないでください。次に、GridView設定に次を追加する必要があります。settings.CallbackRouteValues= new {area = "AreaName"、Controller = "ControllerName"、Action = "ViewDataPartial"}; これらの値はすべて、Routes.csファイルの値と完全に同じである必要があります。「area」プロパティは私にとって重要でした。私はすでにRoutes.csファイルとすべてを持っていましたが、callbackRouteValuesにareaプロパティを追加しませんでした。

解決策の2番目の部分は、GridViewのみを含む部分ビューを作成する必要があることです。したがって、スクリプト、追加のhtml要素、テキスト、何もありません。

于 2012-06-19T14:47:45.837 に答える