3

MVC4のWebGridについて、簡単な質問があります(簡単な答えではないかもしれません!)。

私はそのような機能的なグリッドを持っています

<div id="Submitted">
    @Html.Grid(
        Model.Submitted, displayHeader: false, fieldNamePrefix: "Submitted_", ajaxUpdateContainerId: "Submitted",
        columns: new WebGridColumn[]{
        new WebGridColumn(){ ColumnName = "Date",Header = "Date",Style = "",CanSort = false,Format = x => x.Date.ToString(Globals.Default.DATEFORMAT) },
        new WebGridColumn(){ ColumnName = "ID",Header = "Review",Style = "", CanSort = false, Format = x=>@Html.ActionLink("Review","Review","Company",new{ID = x.ID },new{})  }
    })
</div>

次のページボタンがクリックされたときに「送信済み」divをAjaxでリロードすると、次のページが正常に生成されますが、コントローラーの元のアクションに移動します。これはフルページである必要があります。

グリッド自体以外のすべてをどのように除外しますか?いくつかの巧妙なC#コードまたはjQueryで?

編集:明確にするために、私は、ウェブグリッドを使用したデフォルトのページングが正常に機能していることに関する限り、ページングをより適切に行う方法を尋ねていません-WebGridがどのようにそれをajaxにするかを尋ねていますフルページを返すアクションにポストバックするときのページング。

4

2 に答える 2

2

これは、jquery load()と、関連する着信ノードのみを選択できる機能を使用して行われます。これはhttp://msdn.microsoft.com/en-us/magazine/hh288075.aspxから取得されます

スクリプトをWebGridだけに適用できるようにするために、jQueryセレクターを使用してajaxGridクラスセットで要素を識別します。スクリプトは、jQueryライブメソッド(api.jquery.com/live)を使用して、(グリッドコンテナー内のテーブルヘッダーまたはフッターを介して識別される)並べ替えおよびページングリンクのクリックハンドラーを確立します。これにより、セレクターに一致する既存の要素と将来の要素のイベントハンドラーが設定されます。これは、スクリプトがコンテンツを置き換える場合に便利です。

于 2013-01-28T04:43:20.083 に答える
0

グリッドを部分ビューに配置し、Ajaxで更新する必要があります。コントローラでは、リクエストのタイプを見つける必要があります。それがajaxリクエスト(Request.IsAjaxRequest()による)の場合は、部分ビューを返す必要があります。それ以外の場合は、元のビューを返す必要があります。

ajax.beginformを使用している場合は、次のようにする必要があります。

@using (Ajax.BeginForm("Index", new AjaxOptions { OnFailure = "searchFailed", HttpMethod = "POST", UpdateTargetId = "Submitted" }))
    {
    ...
    }

<div id="Submitted">
   @Html.Partial("_partialviewname", Model)    
</div>

rnおよびコントローラー内:

  public ActionResult Index(int? page)
    {
      ...
      if (Request.IsAjaxRequest())
        {
          return PartialView("_partialviewname", db.model)  
         }
      return View(db.model)

    }
于 2013-01-25T04:36:46.097 に答える