Hi Guys
I have a grid with popup edit template with a dropdownlist that has to be populated based on a column value from the grid which is not the FK one.
My problem is that the model is empty at the time of populating the dropdown. Could you please help me how to achieve this?
here is the edit template:
@using PartnerLink.Models
@model AssignmentDocTypesExt
@{
Layout = "~/Views/Shared/_EmptyLayout.cshtml";
ViewBag.Title = "Customer Document - "+Model.documentDescription;
var currentUserId = ((TBL_USER)(ViewBag.LoggedUser)).USER_ID;
bool isAdmin = ((TBL_USER)(ViewBag.LoggedUser)).LEAD_PROVIDER_ID == null;
EntitiesModel entities = new EntitiesModel();
var DocumentStatusList = entities.TBL_DOCUMENT_TYPE_Status
.Where(d => !d.OUT_OF_USE && d.DOCUMENT_TYPE_ID == Model.DOCUMENT_TYPE_ID)
.Select(d => new
{
d.DOCUMENT_TYPE_STATUS_ID,
d.DOCUMENT_TYPE_STATUS_DESCRIPTION
}
).ToList();
}
@Html.HiddenFor(model => model.ASSIGNMENT_DOCUMENT_TYPE_ID)
@Html.HiddenFor(model => model.DOCUMENT_TYPE_ID)
<
div
class
=
"grid-popup"
>
@Html.LabelFor(m=>m.DOCUMENT_TYPE_STATUS_ID,"Type Status")
@Html.Kendo().DropDownListFor(m => m.DOCUMENT_TYPE_STATUS_ID).Name("DOCUMENT_TYPE_STATUS_ID").BindTo(DocumentStatusList).DataValueField("DOCUMENT_TYPE_STATUS_ID").DataTextField("DOCUMENT_TYPE_STATUS_DESCRIPTION")
<
br
/>
@Html.Kendo().CheckBoxFor(m => m.COMPLETE_FLAG).Name("COMPLETE_FLAG").Label("Complete")
</
div
>
<
br
/>
<
div
class
=
"grid-popup"
>
@(Html.Kendo().Upload()
.Name("files")
.Messages(m => m.Select("Select File"))
.Async(a => a
.Save("ClientDocUpload", "Home")
.AutoUpload(true)
)
.Files(files =>
{
var fs = new List<
CreditCheckFileToParse
>();
foreach (var f in fs)
{
files.Add().Name(f.Name).Extension(f.Extension).Size(f.Size);
}
})
.Events(c => c
.Success(@<
text
>
function() {
$(".k-grid-update").trigger('click');
}
</
text
>)
.Error(@<
text
>
function() {
alert("File Upload Failed");
}
</
text
>)
.Upload(@<
text
>
function(e) {
e.data = { id: $("#ASSIGNMENT_DOCUMENT_TYPE_ID").val() };
}
</
text
>)
)
)
</
div
>
<
script
>
function onSuccessfilesClientDocs(e)
{
$(".k-grid-update").trigger('click');
}
function onErrorfilesClientDocs(e) {
alert("Failed to upload file");
}
</
script
>
here is the main grid:
@using PartnerLink.Models
@using Telerik.OpenAccess.SPI
@model Tuple<
TBL_ASSIGNMENT
, IQueryable<TBL_ASSIGNMENT_EXPENDITURE_VALUE>, IQueryable<
TBL_ASSIGNMENT_INCOME_VALUE
>, IQueryable<
TBL_ASSIGNMENT_VEHICLE
>>
<
div
style
=
"height:500px"
>
@(Html.Kendo().Grid<
AssignmentDocTypesExt
>()
.Name("gridCaseDocuments")
.Columns(columns =>
{
columns.Bound(p => p.ASSIGNMENT_DOCUMENT_TYPE_ID).Hidden(true);
columns.Bound(p => p.ASSIGNMENT_ID).Hidden(true);
columns.Bound(p => p.DOCUMENT_TYPE_ID).Hidden(true);
columns.Bound(p => p.WHICH_APPLICANT).Hidden(true);
columns.Bound(p => p.DOCUMENT_TYPE_STATUS_ID).Hidden(true);
columns.Bound(p => p.CREDITOR_ID).Hidden(true);
columns.Bound(p => p.numOfUploadedFiles).Hidden(true);
columns.Bound(p => p.documentDescription).Title("Document").Width(350);
columns.Bound(p => p.whichApplicant).Title("Applicant").Width(100);
columns.Bound(p => p.documentTypeStatusDescription).Title("Type Status").Width(200);
columns.Bound(p => p.COMPLETE_FLAG).Title("Complete").ClientTemplate("<
input
type
=
'checkbox'
#= COMPLETE_FLAG ?
checked
=
'checked'
:'' # disabled />").Width(90);
columns.Bound(p => p.autoCompleteOnUpload).Title("Auto Complete").ClientTemplate("<
input
type
=
'checkbox'
#= autoCompleteOnUpload ?
checked
=
'checked'
:'' # disabled />").Hidden(true);
columns.Command(command => { command.Edit().Text("Upload"); }).Width(230);
})
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("ClientDocumentUpload").Window(w => w.Events(e => e.Close("onCloseClientDocumentUpload"))))
.Sortable()
.Scrollable()
.ClientDetailTemplateId("gridCaseDocumentsDetails")
.Pageable(pager => pager.Refresh(true))
.Resizable(resize => resize.Columns(true))
.HtmlAttributes(new { style = "height:500px;" })
.Events(clientEvents => clientEvents.DataBound("onRowDataBoundgridCaseDocuments"))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handlerCaseDocuments"))
.Model(model => model.Id(p => p.ASSIGNMENT_DOCUMENT_TYPE_ID))
.Read(read => read.Action("CaseDocuments_Read", "Home", new { id = Model.Item1.ASSIGNMENT_ID }))
.Update(update => update.Action("CaseDocuments_Update", "Home"))
)
)
</
div
>
<
script
id
=
"gridCaseDocumentsDetails"
type
=
"text/kendo-tmpl"
>
@(Html.Kendo().Grid<
ClientDocumentsExt
>()
.Name("gridCaseDocuments_#=ASSIGNMENT_DOCUMENT_TYPE_ID#")
.Columns(columns =>
{
columns.Bound(m=>m.ASSIGNMENT_DOCUMENT_ID).Hidden(true);
columns.Bound(m => m.FILE_NAME).Title("File Name");
columns.Bound(m => m.uploadedBy).Title("Uploaded By").Width(210);
columns.Bound(m => m.DATE_CREATED).Title("Upload Date").Format("{0:dd/MM/yyyy}").Width(110);
columns.Command(c => c.Custom("Download").Click("onClickDownloadClientDoc")).Width(110);
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(5)
.Model(model => model.Id(m => m.ASSIGNMENT_DOCUMENT_ID))
.Read(read => read.Action("gridCaseDocumentsDetails_Read", "Home", new { id = "#=ASSIGNMENT_DOCUMENT_TYPE_ID#" }))
)
.Pageable(pager => pager.Refresh(true))
.Sortable()
.Scrollable()
.ToClientTemplate()
)
</
script
>
<
script
type
=
"text/javascript"
>
function error_handlerCaseDocuments(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function () {
message += this + "\n";
});
}
});
alert(message);
}
}
$("#gridCaseDocuments").find(".k-grid-content").height(421);
function onClickDownloadClientDoc(e)
{
alert(e.ASSIGNMENT_DOCUMENT_ID);
}
function onRowDataBoundgridCaseDocuments(e) {
var grid = $("#gridCaseDocuments").data("kendoGrid");
var gridData = grid.dataSource.view();
for (var i = 0; i <
gridData.length
; i++) {
var
currentUid
=
gridData
[i].uid;
if (gridData[i].COMPLETE_FLAG) {
var
currenRow
=
grid
.table.find("tr[
data-uid
=
'" + currentUid + "'
]");
$(currenRow).css("background-color", "rgb(164,198,57)");
} else if (gridData[i].numOfUploadedFiles > 0)
{
var currenRow = grid.table.find("tr[data-uid='" + currentUid + "']");
$(currenRow).css("background-color", "rgb(255,191,0)");
}
}
}
function onCloseClientDocumentUpload()
{
alert("onCloseClientDocumentUpload");
}
</
script
>