can someone help please
my platform is asp.net mvc 5 using razor pages in vs 2019 using telerik latest controls.
in my patient page I have a kendo listivew inside of a kendo TileLayout.
datasource is a list of patient name populating the listivew
listView generate the listing of items just fine.
however, when I select on the listivew i can not get the current selected item number,
which will generate an action
no index number, no way to find where to get the selected item.
What Am I Doing Wrong.
// index.cshtml
@model ap_GetMembershipListAllRow
<script type="text/x-kendo-template" id="template">
<div class="patient-view k-widget">
<div class="patientidtemp">#:Patient_ID#</div>
<div class="fullnametemp">#:LastName#, #:FirstName# #:MiddleName#</h1>
<div class="bdatetemp">Date Begin: #:kendo.toString(BeginDate,"MMM/dd/yyyy")#</div>
</div>
</script>
<script type="text/x-kendo-template" id="template2">
<div class="patient-view k-widget">
<div class="patientidtemp1">#:Patient_ID#</div>
<div class="fullnametemp1">#:LastName#, #:FirstName# #:MiddleName#</h1>
<div class="bdatetemp1">Date Begin: #:kendo.toString(BeginDate,"MMM/dd/yyyy")#</div>
</div>
</script>
<script type="text/x-kendo-template" id="patient-list">
@(Html.Kendo().ListView<ListViewModel>()
.Name("PatientListView")
.TagName("div")
.ClientTemplateId("template")
.ClientAltTemplateId("template2")
.DataSource(dSource => dSource
.Ajax()
.Read(read => read.Action("PatientList_Read", "PatientPortal").Type(HttpVerbs.Get))
.PageSize(11)
.Model(model => model.Id("Patient_ID"))
)
.Pageable()
.Selectable(selectable => selectable.Mode(ListViewSelectionMode.Single))
.Events(events => events.Change("onChange"))
.ToClientTemplate()
)
</script>
//patientportal.js
// nothing works
function onChange(e) {
var ds = $("#PatientListView").data("kendoListView");
var index = ds.select().index(),
dataItem = ds.dataSource.view()[index];
var item = dataItem;
var listViewx = $("#PatientListView").data("kendoListView");
selectItem = listViewx.dataSource.index();
listView.select(listView.content.children().first());
var dataSource = listViewx.dataSource.view();
if (listViewx) {
$.each(dataSource, function (index, item) {
if (item.Code === code) {
listViewx.select(item);
selectedCoverageCode = item;
}
});
}
var index = this.select().index();
dataItem = this.dataSource.view()[index];
}
// controller.cs
public JsonResult PatientList_Read([DataSourceRequest] DataSourceRequest request)
{
var result = patientService.GetMembersListItem(); //default list
if (ViewData["PatientID"] != null && ViewData["MultiNames"] as string == "Individual")
{
string first = ViewData["FirstName"] as string;
string last = ViewData["LastName"] as string;
result = patientService.GetPatientSearchNames(last,first );
}
return new JsonResult(result.ToDataSourceResult(request));
}
// patientPortalService.cs
public List<ListViewModel> GetMembersListItem()
{
string connectionString = _configuration.GetConnectionString("ManagerToolsDBContextConnection");
ap_GetMembershipListAll listAll = new ap_GetMembershipListAll(connectionString);
listAll.Clinic_id = Convert.ToInt32(_session.GetString("ClinicNumber"));
Collection<ap_GetMembershipListAllRow> row = listAll.Execute();
return GetPatientListViewMapping(row);
}
public List<ListViewModel> GetPatientListViewMapping(Collection<ap_GetMembershipListAllNameRow> ap_Get)
{
List<ListViewModel> lv = new List<ListViewModel>();
foreach (ap_GetMembershipListAllNameRow item in ap_Get)
{
ListViewModel nlv = new ListViewModel();
nlv.FirstName = item.FirstName.ToString();
nlv.MiddleName = item.MiddleName.ToString();
nlv.LastName = item.LastName.ToString();
nlv.Patient_ID = (long)item.Patient_id;
nlv.BeginDate = (DateTime)item.MembershipStartDate;
lv.Add(nlv);
}
return lv;
}
//ListViewModel.cs
public class ListViewModel
{
public long Patient_ID { get; set; }
public string Greeting { get; set; }
public string FirstName { get; set; }
[DefaultValue(true)]
public string MiddleName { get; set; }
public string LastName { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}")]
public DateTime BeginDate { get; set; }
}