Telerik MVC 2.0 GridViewを検索したい最初にグリッドがレンダリングされる「インデックス」ビューがあり、「履歴の表示」をクリックすると、PartialView「 SearchGrid」Ajax.ActionLink
が開きます。
このビューには、2つのTelerik MVC DatePickersと送信ボタンがあります。[送信]ボタンをクリックすると、DatePicker値がUploadFilesコントローラーの
SearchByDates( DateTime? frmDate,DateTime? toDate)
アクションに返されます。
このアクションでは、WorkerServiceクラスとServicesクラスを使用して、DBからUpdateDates、つまり frmDateとtoDateの値の間の更新のレコードをフェッチしています。
この時点まではすべて正常に機能しますが、私の問題はAjaxにあり、UploadFilesViewModelのGetUploadDescriptorがUploadFilesGridにバインドされた後、再びSearchByDatesアクションが呼び出され、JSコードにあるurl.Actionが再度呼び出され、パラメーターは渡されません。最初にこのアクションの呼び出しが行われたとき、FormCollectionには何も含まれていませんが、次に新しい呼び出しが行われたとき、FormCollectionの値にはfrmDate、toDateが含まれています。
最後に、空のグリッドが表示されます。何が間違っているのかわかりません。
ソースコード :-
My GridView:-
<div id="result">
<div>
<%: Ajax.ActionLink ( "Show History", "SearchGrid", null, new AjaxOptions { HttpMethod = "Get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "renderForm", OnSuccess = "updateTarget" }, new { @class = "t-button" } )%>
</div>
<div id="di">
<% Html.Telerik().Grid<UploadedFilesDescriptor>()
.Name("UploadedFilesGrid")
.DataKeys(datakeys => datakeys.Add(m => m.Id))
.ClientEvents ( events => events.OnDataBound ( "rebindFileListGrid" ) )
columns.Bound(c => c.UploadedDate)
.HtmlAttributes(new { @style = "text-align:center;" })
.Width(100);
})
.DataBinding(databinding => databinding
.Ajax()
.Select("GetUploadedFilesList", "UploadFiles"))
.EnableCustomBinding ( true )
.Render();
%>
</div>
</div>
: My SearchGrid PartialView :-
<% using (Ajax.BeginForm( "SearchByDates","UploadFiles",new AjaxOptions{UpdateTargetId ="divUploadGrid",LoadingElementId = "LoadingImage"},new {@id= "itemForm"}))
{ %>
//Two Telerik MVC DatePickers named "frmDate" and " toDate"
<input type="submit" id="ProfileSearchSubmit" name="ProfileSearchSubmit" onclick="aClick();" value="Search" />
<div id="divUploadFileGrid">
--I am again Rendering the Serached Grid with same model, columns
</div>
//my Javascript Jquery Ajax Function
function aClick() {
debugger;
var to = $('#toDate').val().toString();
var frm = $('#frmDate').val().toString();
var params = "frmDate=" + frm + "&toDate=" + to;
if (params != null) {
$.ajax({
url: '<%= Url.Action("SearchByDates","UploadFiles") %>'+"?"+params,
cache: false,
success: function (html) {
$("#divUploadGrid").show();
},
complete: function () {
$("#LoadingImage").css("display", "none");
$("#divUploadGrid").css("display", "block");
$("#result").hide();
}
});
}
};
:- Controller Action :-
public ActionResult SearchByDates( DateTime? frmDate, DateTime? toDate,FormCollection colletion)
{
try
{
DateTime? fromDate = frmDate.Value;
DateTime? toDates = toDate.Value;
UploadedFilesViewModel model = new UploadedFilesViewModel ( );
model.GetUploadFileDescriptor = _workerService.GetUploadGridByDates(fromDate, toDates );
return PartialView ( "SearchGrid", model );
}
catch (Exception ex)
{
throw ex;
}
return null;
}
:- GridAction to bind records in GridView
public ActionResult GetUploadedFilesList ( DateTime? frmDate, DateTime? toDate )
{
try
{
if (Request.IsAjaxRequest()&& frmDate==null&&toDate==null)
{
return View ( new GridModel ( _workerService.GetUploadedFilesList ( ) ) );
}
else
{
return View ( new GridModel ( _workerService.GetUploadGridByDates ( frmDate, toDate ) ) );
}
}
catch (Exception ex)
{
bool reThrow = ExceptionPolicyWrapper.HandleException(ex, ExceptionPolicies.MVCPolicy);
if (reThrow)
throw;
}
return null;
}