Telerik.Web.Mvc grid. В .DetailView не вызывается метод Ajax - PullRequest
1 голос
/ 18 октября 2010

Я использую бесплатную сетку Telerik.Web.Mvc и следую этому примеру: http://demos.telerik.com/aspnet-mvc/grid/hierarchyajax

Мой выпуск:

Я заполняю таблицу результатами поиска после того, как пользователь ввел некоторые данные и отправил с помощью кнопки поиска. В методе DetailView () я ссылаюсь на мой метод SearchQuote_QuotesForHierarchyAjax, который определен в моем контроллере, когда DetailView выполняет данные, которые должны быть получены, но это действие контроллера не выполняется для меня.

Если я загружаю сетку при первой загрузке страницы, она выполняется. но не при загрузке сетки в кнопку поиска нажмите

Код в моем проекте:

My SearchQuote.aspx View выглядит следующим образом

  <%= Html.Telerik().Grid(Model.QuoteSummaryList)
                .Name("SearchQuoteGrid")
    .Columns(columns =>
    {
        columns.Bound(q => q.QuoteId).Title("Quote #").Width(50);
        columns.Bound(q => q.AxiomId).Title("Axiom Id").Width(180);

    })
     .ClientEvents(events => events.OnRowDataBound("quotes_onRowDataBound"))
    .DetailView(details => details.ClientTemplate(
     Html.Telerik().Grid(Model.QuoteSubSummaryList)
        .Name("Quotes_<#= QuoteId #>")
        .Columns(columns =>
        {
            columns.Bound(o => o.PositionCode).Width(101);
            columns.Bound(o => o.Group).Width(140);
        })
        .DataBinding(dataBinding => dataBinding.Ajax()
        .Select("SearchQuote_QuotesForHierarchyAjax", "SearchQuote", new
        {quoteid ="<#= QuoteId #>"}))
        .Pageable()
        .Sortable()
        .Filterable()
        .ToHtmlString()
    ))
    .DataBinding(dataBinding => dataBinding.Ajax()
                                .Select("SearchQuote_Select", "SearchQuote"))
    .Sortable()
    .Pageable(p => p.PageSize(3))
%>
<script type="text/javascript">

function expandFirstRow(grid, row) {
      if (grid.$rows().index(row) == 0) {
          grid.expandRow(row);
      }
   }

   function quotes_onRowDataBound(e) {
        var grid = $(this).data('tGrid');
        expandFirstRow(grid, e.row);
    }
</script>

И SearchQuoteController имеет этот код.

    [AcceptVerbs(HttpVerbs.Post)]
    [GridAction]
    public ActionResult SearchQuote_QuotesForHierarchyAjax(int quoteid)
    {
       List<QuoteLineSummaryDM> sublist = new List<QuoteLineSummaryDM>();

       QuoteLineSummaryDM a = new QuoteLineSummaryDM();
         a.PositionCode =  "50";
         a.Group = "1";
         sublist.Add(a);

       QuoteLineSummaryDM b = new QuoteLineSummaryDM();
         b.PositionCode =  "40";
         b.Group = "2";
         sublist.Add(b);

         var qrows = (from r in sublist
                      select r).AsQueryable();

         return View(new GridModel(qrows));
    }

Что мне не хватает? Моя версия даже проще, чем демо. Есть идеи?

Спасибо.

Я нашел другую сетку, которая делает то, что я хочу сделать. Это называется jqGrid

...