2011-01-25 53 views
0

我试图创建一个使用ASP.NET MVC 2这说明了两点页:Telerik的电网与阿贾克斯

1. the upper half of the page should show a form 
2. the lower half should show the results based on the information from the form 

我试着用Ajax.BeginForm做和更新的下半部分页面使用UpdateTargetId。基本上,这工作。但是,结果还包含可分页的Telerik网格。这是麻烦开始的地方。

网格主要显示得很好,但当我尝试浏览网格页面时,它开始出错。普通(非Ajax)网格使用链接。如果我使用网格的这种变体,我会陷入麻烦,因为链接请求一个新页面,该页面不包含任何来自窗体的信息,因此我得到一堆错误。

如果我打开Ajax,它不起作用,因为它不适用于通过Ajax检索的部分视图(脚本标记在这种情况下不起作用)。在这种情况下,我只是得到一个呈现为纯文本的JSON结果对象。

如果我把它放在一个页面上,我也可以使它工作。但出于某种原因,网格不会使用Ajax。在索引视图我用下面的代码来呈现网格:

 Html.Telerik().Grid<FoobarListItem>() 
     .Name("Foobar") 
     .DataBinding(dataBinding => dataBinding.Ajax().Select("_Paging", "Foobar")) 
     .ToolBar(commands => commands 
      .Custom() 
      .HtmlAttributes(new { id = "export", onclick = onclickValue }) 
      .Text(Html.Alias("default", "ExportCSV")) 
      .Url("#") 
     ) 
     .Columns(columns => 
     { 
      //Template column which shows an action link 
      columns.Bound(o => o.Datum); 
      columns.Bound(o => o.VerbruikLaag); 
      columns.Bound(o => o.VerbruikNormaal); 
      columns.Bound(o => o.VerbruikPiek); 
     }) 
     .Scrollable(scrolling => scrolling.Height(200).Enabled(false)) 
     .Pageable() 
     .Localizable("nl-NL") 
     .Render(); 
} 

但我是否把Ajax的数据绑定或没有,它仍然呈现以同样的方式表。有没有人有一个想法,我要去哪里错了?

回答

0

事实证明,实际的问题是需要手动包含所需的JavaScript文件。使用最新版本的Telerik,即使对于通过Ajax加载的组件,也会自动发生。

我通过将表单转换为常规HTML表单来解决了我的问题。网格根据表格的数据是否在模型中可用而加载在同一页面上。分页工作方式相同。

0

Telerik Grid Client Side Events

拥有的你想达到什么样的例子。这是OnRowselect事件。您可以处理该事件并访问所有网格信息,然后进行jquery调用以检索视图的下半部分。

1

检查this帮助主题。 Ajax.BeginForm不执行默认情况下在ajax响应中返回的JavaScript,并且需要一些jQuery代码才能使其工作。帮助主题显示所需的代码。大多数情况下,用ASP.NET MVC 3引入新的不显眼的ajax框架并不需要这样做。

+0

我读到了,但代码不适合我。 – Pieter 2011-01-27 07:43:11