使用局部视图搜索Telerik MVC 2.0 Grid

时间:2012-07-26 07:55:16

标签: telerik-mvc

我想搜索Telerik MVC 2.0 GridView我有一个“索引”视图,首先渲染网格,然后点击“显示历史记录”{{ 1}}打开PartialView“ SearchGrid ”。

在此视图中有2个Telerik MVC DatePickers和一个提交按钮。单击“提交”按钮会将DatePicker值发送回UploadFiles Controller's Ajax.ActionLink行动。

在此操作中,我在UpdateDates 之间获取更新记录,例如 frmDate& toDate 值,来自使用WorkerService类和Services类的DB。

到目前为止一切正常,但我的问题是Ajax,在UploadFilesViewModel的GetUploadDescriptor与UploadFilesGrid绑定后,再次调用SearchByDates动作,再次调用JS代码上的url.Action,而不传递参数。首先调用此操作时,FormCollection不包含任何内容,但下次进行新调用时FormCollection值包含frmDate,toDate。

最后显示一个空网格。我不知道我做错了什么..

源代码: -

SearchByDates( DateTime? frmDate,DateTime? toDate)

2 个答案:

答案 0 :(得分:0)

您不应在提交按钮上定义onclick事件处理程序。 Ajax.BeginForm构造通过自己的DatePickers值传递ajax请求。

答案 1 :(得分:0)

您同时收到2个请求:

  • 由Ajax.BeginForm;

  • 通过定义onclick =“aClick();”提交按钮中的属性('aClick'函数在其正文中触发另一个ajax请求。)

我建议您从提交按钮中删除onclick属性。 如果你需要在ajax表单提交之前运行javascript路由,你可以定义AjaxOptions.OnBegin选项:

新的AjaxOptions { ... OnBegin = “onBegin” }

function onBegin(e){
  ...
}

在此功能中,你可以这样做:

  • 更改请求'正文值;
  • 通过返回虚假值来取消提交。

如果您的DatePicker控件位于内部 <%using(Ajax.BeginForm(“SearchByDates”,“UploadFiles”..构造这些都是所需的更改。 否则,您需要以这种方式定义onBegin函数:

function onBegin(e){

var to = $('#toDate').val();
var frm = $('#frmDate').val();

var req = e.get_request();
var req_body = req.get_body();
req_body += "&frmDate=" + frm + "&toDate=" + to;

req.set_body(req_body);

return true;
}

这确保您的DatePickers值也会被提交。