1

Telerikフォーラムに投稿しようとしましたが、スレッドを開こうとするたびに、「おっと...サーバーに問題があったようです」というメッセージが表示されます。そこで、この質問をここに投稿しました。

私はTelerikとRadGridにかなり慣れていません。クライアントがカスタムソートを必要とするため、既存のプロジェクトを変更しようとしています。数字やテキストを含む可能性のあるデータフィールドがあるため、文字列型ですが、数字として並べ替える必要がある場合もあります。だから私はこのリンクに行きました:

http://demos.telerik.com/aspnet-ajax/grid/examples/programming/sort/defaultcs.aspx

および http://www.telerik.com/help/aspnet-ajax/grdapplycustomsortcriteria.html

例によると:

「カスタム並べ替えをオンにすると、RadGridは並べ替えアイコンを表示しますが、実際にはデータを並べ替えません。」ただし、デフォルトの並べ替えを無効にするには、AllowCustomSortingを追加するだけでは不十分なようです。

SortCommandを実装するときに、e.Canceled=true;を実行する必要があることに気付きました。

それ以外の場合、デフォルトの並べ替えが発生するためです。なぜこれがドキュメントや例に記載されていないのですか?

しかし、主な質問は、SortCommand内で、私のRadGridにはすでにすべてのアイテムがロードされているということです。それで、データベースにぶつからないようにそれらをソートする方法はありますか?「オブジェクトソース、GridSortCommandEventArgs e」の両方のさまざまなItemsプロパティにアクセスしようとしましたが、すべてのItemが読み取り専用であるため、それらを並べ替えてRadGridにアタッチし直すことができません。

アイデアをありがとう。

4

2 に答える 2

0

これは、データベースにヒットしない、私が使用するいくつかのコードの例です。RazorビューエンジンでMVC3を使用しています。Ajaxバインディングに注目してください。Telerik.Web.Mvc.UIを使用して追加し、コントローラーの「Post」メソッドに[GridResult]で注釈を付け、GridModelを返してJson結果セットを取得することを忘れないでください。

    using Telerik.Web.Mvc;

    [GridAction]
    public ActionResult AjaxGridSelect()
    {
        return View(new GridModel(db.lm_m_category));
    }

これがindex.cshtml(かみそりエンジン)です。重要なのはAjaxバインディングです。

 @model IEnumerable<LinkManagerAdmin.Dal.lm_r_category>  
 @using Telerik.Web.Mvc.UI

 @(Html.Telerik().Grid(Model)
    .Name("Grid")
    .DataKeys(keys => keys.Add(c => c.category_id ))
    .DataBinding(dataBinding => dataBinding.Ajax()
    .Select("AjaxGridSelect", "CategoryTree")
    .Insert("GridInsert", "CategoryTree", new { GridEditMode.PopUp, GridButtonType.ImageAndText })
    .Update("GridUpdate", "CategoryTree", new { GridEditMode.InLine, GridButtonType.ImageAndText })
    .Delete("GridDelete", "CategoryTree", new { GridEditMode.InLine, GridButtonType.ImageAndText }))
    .Columns(columns =>
    {
      columns.Bound(p => p.category_name).Width(150);
      columns.Bound(p => p.status_cd).Width(100);
      columns.Command(commands =>
      {
        commands.Edit().ButtonType(GridButtonType.ImageAndText);
        commands.Delete().ButtonType(GridButtonType.ImageAndText);
      }).Width(180).Title("Commands");
    })
   .Editable(editing => editing.Mode(GridEditMode.InLine))
   .Pageable(paging => paging.PageSize(50)
   .Style(GridPagerStyles.NextPreviousAndNumeric)
   .Position(GridPagerPosition.Bottom))
   .Sortable(o => o.OrderBy(sortcol => 
   {
                sortcol.Add(a => a.category_name);
                sortcol.Add(a => a.add_date);
   })
   .Filterable()
   .Groupable()
   .Selectable())
于 2011-05-18T07:33:43.163 に答える
0

objectDatasource の OnSelecting イベントで sortExpression を設定し、それを SelectMethod で使用できます。

protected void odsGridData_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
   e.InputParameters["filterExpression"] = grdMyTasks.MasterTableView.FilterExpression;
   //Set the Sort Expression and use this in the Get method
   e.InputParameters["sortExpression"] = grdMyTasks.MasterTableView.SortExpressions.GetSortString();
   e.Arguments.StartRowIndex = grdMyTasks.CurrentPageIndex;
   e.Arguments.MaximumRows = grdMyTasks.PageSize;
}

このようにして、カスタム ソートを実行し、データを RadGrid に渡すことができます。

お役に立てれば。

于 2010-10-18T14:49:42.623 に答える