I am using a master detail grid in Ajax mode with a client grid in a client template. If I don't include the client template, everything is fine. When I do include the client template, I get a syntax error for every line in the master grid. The syntax error is the ImageId (the model id) of the master grid. I can see no reference to it anywhere in the runtime code.
A second, somewhat related question is how do I reference items in the client grid? For instance when I am creating the client grid in the template, I can get the value of the ImageId from the master grid using "#=ImageId#'. However, if I try to reference the fields of the client grid data structure the same way I get an error saying it can't find the field. I am assuming this is because it is looking in the master grid data structure. How do I reference the client data structure's fields?
Thank you,
Kerry
The aspx is included below:
01.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<
int
?>" %>
02.
<%@ Import Namespace="WellsFargo.NewsPub.Web.UI.Areas.Attachment.Models" %>
03.
<%
04.
var workflowUrl = Url.Content("~/" + Constants.Areas.Attachment + "/" + Constants.Controllers.Image + "/" + Constants.ImageController.ExecuteImageWorkflowCommand);
05.
%>
06.
<% Html.Kendo().Grid<
ImageModel
>()
07.
.Name("PublicationImagesGrid")
08.
.DataSource(dataSource => dataSource
09.
.Ajax()
10.
.Model(model => model.Id(i => i.ImageId))
11.
.Read(Constants.ImageController.ReadPublicationImages, Constants.Controllers.Image, new { publicationId = Model })
12.
.Destroy(destroy => destroy.Action(Constants.ImageController.DeleteImage, Constants.Controllers.Image))
13.
)
14.
.HtmlAttributes(new { @class = "image-grid" })
15.
.Columns(columns =>
16.
{
17.
columns.Bound(pub => pub.PublicationId).Hidden(true);
18.
columns.Bound(pub => pub.ImageId);
19.
columns.Bound(c => c.Thumbnail)
20.
.Title("Thumbnail")
21.
.Width(1)
22.
.ClientTemplate("<
img
src
=
'#= ThumbnailSrc #" + "'
alt
=
'#= Tag #'
/>");
23.
columns.Bound(pub => pub.ImageSortOrder).Title("Sort Order");
24.
columns.Bound(c => c.FileName)
25.
.Title("File Name")
26.
.Width(1);
27.
columns.Bound(c => c.Dimensions)
28.
.Width(1);
29.
columns.Bound(c => c.Tag);
30.
columns.Bound(c => c.Caption);
31.
columns.Bound(c => c.ImageId)
32.
.ClientTemplate("#= get_image_approval_control('"
33.
+ workflowUrl
34.
+ "', ImageId, 1, '"
35.
+ Constants.ImageController.ReadPublicationImages + "', "
36.
+ (int)DataConstants.ImageStatus.Approved + ", "
37.
+ (int)DataConstants.ImageStatus.Rejected + ", "
38.
+ (int)DataConstants.ImageStatus.ApprovalRequired + ") #")
39.
.Width(150)
40.
.Title("Status");
41.
columns.Command(command => command.Destroy());
42.
columns.Bound(c => c.Height).Hidden(true);
43.
})
44.
.ClientDetailTemplateId("child-image-template")
45.
.ToolBar(toolbar => toolbar.Template(() =>
46.
{ %> <
a
onclick='create_image(<%= Model %>)' class='k-button'>Add New Image</
a
> <% }))
47.
.Events(e => e
48.
.DataBound("image_grid_data_bound")
49.
)
50.
.Render();
51.
%>
52.
53.
<
script
id
=
"child-image-template"
type
=
"text/x-kendo-template"
>
54.
<%= Html.Kendo().Grid<
ChildImageDto
>()
55.
.Name("ChildImages_#=ImageId#")
56.
.DataSource(ds => ds.Ajax().Read(Constants.ImageController.ReadChildImages, Constants.Controllers.Image, new {parentImageIdStr = "#=ImageId#"}))
57.
.Columns(col => {
58.
col.Bound(i => i.ChildImageId);
59.
col.Bound(i => i.MimeType);
60.
col.Bound(i => i.Dimensions);
61.
col.Bound(i => i.BinarySrc).ClientTemplate("<
img
src
=
'#=BinarySrc#'
alt
=
'#=Tag#'
/>");
62.
})
63.
.ToClientTemplate() %>
64.
</
script
>