I am trying to use the events(e => e.Error("onError") in my grid that is ajax bound. I keep getting a javascript error "onError" is undefined. the grid is on a partial page that is loaded via ajax call.
when I put the script in the main view the onError function runs event if there is no error thrown. if I put it in a document ready function I get undefined.
not sure what to do.
index view
@model Jlo4MVC.Models.UserToSend
@{
ViewBag.Title =
"JLO"
;
}
<div id=
"userinput"
class
=
"row"
>
<ul
class
=
"userrentry"
>
<li>
@Html.Label(
"User ID"
)
@Html.Kendo().TextBox().Name(
"searchuserid"
)
</li>
<li>
@Html.Kendo().Button().Name(
"findUser"
).Content(
"Search for Sessions"
).HtmlAttributes(
new
{ @
class
=
"k-button"
})
</li>
</ul>
</div>
<div id=
"sessionsfound"
class
=
"row grid-centered"
style=
"display:none"
>
</div>
<div id=
"status"
class
=
"row grid-centered"
style=
"display:none"
>
</div>
<script type=
"text/javascript"
>
$(document).ready(function(){
function onError(e) {
alert(
"Some Error"
);
}
})
$(
'#findUser'
).click(function () {
var myurl =
'@Url.Action("getSessionsView", "home")'
;
var model = { userID: $(
"#searchuserid"
).val() };
$(
'#userinput'
).css(
"display"
,
"none"
);
$(
'#sessionsfound'
).css(
"display"
,
"block"
);
$.ajax({
url: myurl,
type:
"POST"
,
datatype:
"html"
,
data: model,
success: function (data) {
$(
'#sessionsfound'
).html(data);
}
});
});
</script>
Partial view
@model Jlo4MVC.Models.UserToSend
<div>
@(Html.Kendo().Grid<Jlo4MVC.Models.SessiondataDTO>()
.Name(
"VSM_Grid"
)
.NoRecords(
"NO Sessions Found"
)
.Columns(c =>
{
c.Template(t => { }).ClientTemplate(
"<input type='checkbox' class='checkbox' />"
);
c.Bound(i => i.id).Title(
"ID"
).Width(10);
c.Bound(i => i.farmName).Title(
"Farm"
).Width(25);
c.Bound(i => i.domainName).Title(
"Domain"
).Width(25);
c.Bound(i => i.applicationName).Title(
"App Name"
).Width(75);
c.Bound(i => i.serverName).Title(
"Server"
).Width(25);
c.Bound(i => i.sessionID).Title(
"Session ID"
).Width(10);
c.Bound(i => i.userID).Title(
"User ID"
).Width(40);
})
.DataSource(data => data
.Ajax()
.Events(events => events.Error(
"onError"
))
.Model(m => m.Id(p=>p.id))
.Read(read => read.Action(
"sessionsread"
,
"Home"
,
new
{userID = Model.userID})))
)
</div>
<div id=
"imentry"
class
=
"userrentry-gridsession"
>
<label
for
=
"tbIMnumber"
class
=
"required"
>Incident Number</label>
<input type=
"text"
id=
"imnum"
name=
"tbIMnumber"
class
=
"k-textbox"
placeholder=
"Incident num"
required validationmessage=
"Enter a valid Incident ID"
style=
"width: 220px;"
/>
</div>
<div
class
=
"kbutton-centered"
>
@Html.Kendo().Button().Name(
"endselected"
).Content(
"End Sessions"
).HtmlAttributes(
new
{ @
class
=
"k-button"
})
</div>
<div id=
"showErrors"
style=
"display:none"
>
</div>
<script>
var checkedvalues = [];
var jsonObj = [];
$(function () {
var validator = $(
"#imentry"
).kendoValidator().data(
"kendoValidator"
);
var myurl =
'@Url.Action("SessionsEnded", "home")'
;
$(
"#endselected"
).click(function () {
if
(validator.validate()) {
var imnum = $(
'#imnum'
).val();
var datatosend = {
imnumber: imnum,
sessionDTO: jsonObj
};
$(
'#sessionsfound'
).css(
"display"
,
"none"
);
$(
'#status'
).css(
"display"
,
"block"
);
$.ajax({
url: myurl,
type:
"POST"
,
datatype:
"html"
,
data: datatosend,
success: function (data) {
$(
'#status'
).html(data);
}
});
}
});
var grid = $(
"#VSM_Grid"
).getKendoGrid();
grid.table.on(
"click"
,
".checkbox"
, selectRow);
})
function selectRow() {
var
checked
=
this
.
checked
,
row = $(
this
).closest(
"tr"
),
grid = $(
"#VSM_Grid"
).data(
"kendoGrid"
),
dataItem = grid.dataItem(row);
jsonObj.push(dataItem);
//checkedvalues[dataItem.userID] = checked;
if
(
checked
) {
//-select the row
row.addClass(
"k-state-selected"
);
}
else
{
//-remove selection
row.removeClass(
"k-state-selected"
);
}
}
</script>
public
class
HomeController : Controller
{
[HttpGet]
public
ActionResult JLO()
{
UserToSend usertoSend =
new
UserToSend();
return
View(usertoSend);
}
public
ActionResult sessionsread([DataSourceRequest] DataSourceRequest request, UserToSend usertosend)
{
List<SessiondataDTO> sdto =
new
List<SessiondataDTO>();
sdto.Add(
new
SessiondataDTO { applicationName =
"testapplication"
, farmName =
"testFarm"
, domainName =
"MS"
, id = 1, serverName =
"server01"
, userID = usertosend.userID, sessionID = 01 });
sdto.Add(
new
SessiondataDTO { applicationName =
"testapplication4"
, farmName =
"testFarm"
, domainName =
"MS"
, id = 2, serverName =
"server02"
, userID = usertosend.userID, sessionID = 18 });
sdto.Add(
new
SessiondataDTO { applicationName =
"testapplication3"
, farmName =
"testFarm"
, domainName =
"MS"
, id = 3, serverName =
"server12"
, userID = usertosend.userID, sessionID = 15 });
sdto.Add(
new
SessiondataDTO { applicationName =
"testapplication7"
, farmName =
"testFarm"
, domainName =
"MS"
, id = 4, serverName =
"server00"
, userID = usertosend.userID, sessionID = 8 });
//List<SessionData> sessiondatas = new List<SessionData>();
//FarmInterfaceserviceClient svc = new FarmInterfaceserviceClient();
//SessiondataDTO sessiondatadto = new SessiondataDTO();
//List<SessiondataDTO> sdto = sessiondatadto.sessiondataTOSessionDTO(svc.GetSessionData(usertosend.userID));
DataSourceResult result = sdto.ToDataSourceResult(request);
return
Json(result, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public
ActionResult getSessionsView(UserToSend usertosend)
{
return
PartialView(
"_GetSessionsView"
, usertosend);
}