Hi,
I have a razor patial view that contains a few controls (i.e. inputs, drop downs, date pickers...). These controls are created using kendo helper functions for MVC.
In my main view I have an "Add Item" ajax action link that woud append a new instance of partialview in a div container every time it's clicked.
Using this approach kendo controls don't get correctly rendered. Dropdowns show as text, datepickers are missing styles .
If there is a different/better approach that I should be using for Adding dynamic partials to the view please let me know.
The code that adds partialview to main view is:
And the Partial View is looking like this:
I have a razor patial view that contains a few controls (i.e. inputs, drop downs, date pickers...). These controls are created using kendo helper functions for MVC.
In my main view I have an "Add Item" ajax action link that woud append a new instance of partialview in a div container every time it's clicked.
Using this approach kendo controls don't get correctly rendered. Dropdowns show as text, datepickers are missing styles .
If there is a different/better approach that I should be using for Adding dynamic partials to the view please let me know.
The code that adds partialview to main view is:
@(Ajax.ActionLink("Add another shipment", "BlankEditor", new AjaxOptions
{
UpdateTargetId = "items",
InsertionMode = InsertionMode.InsertAfter,
}))
@model SupplyViewModel
<
div
class
=
"k-block k-info-colored"
style
=
"margin-bottom: 1em;"
>
<
div
class
=
"k-block"
>
<
div
style
=
"display: inline-block;"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.ReportDate)
</
div
>
<
div
class
=
"editor-field"
>
@(Html.Kendo().DatePickerFor(model => model.ReportDate)
.Name("ReportDate" + new Random().Next())
.Value(DateTime.Now.Date)
.Max(DateTime.Now.Date))
@Html.ValidationMessageFor(model => model.ReportDate)
</
div
>
</
div
>
<
div
style
=
"display: inline-block;"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.OrganizationId, "Supplier")
</
div
>
<
div
class
=
"editor-field"
>
@(Html.Kendo().DropDownListFor(model => model.OrganizationId).Name("ddlOrganization").HtmlAttributes(new { @Class = "HABddList" }).SelectedIndex(0).BindTo(ViewBag.OrganizationId))
@Html.ValidationMessageFor(model => model.OrganizationId)
</
div
>
</
div
>
</
div
>
<
div
class
=
"k-block vesselinfo"
style
=
"position: relative;"
>
<
div
style
=
"display: inline-block;"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.VesselName)
</
div
>
<
div
class
=
"editor-field"
>
@Html.EditorFor(model => model.VesselName)
@Html.ValidationMessageFor(model => model.VesselName)
</
div
>
</
div
>
<
div
style
=
"display: inline-block;"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.VesselId)
</
div
>
<
div
class
=
"editor-field"
>
@Html.EditorFor(model => model.VesselId)
@Html.ValidationMessageFor(model => model.VesselId)
</
div
>
</
div
>
<
div
style
=
"display: inline-block;"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.PortOfEntryId, "PortOfEntry")
</
div
>
<
div
class
=
"editor-field"
>
@(Html.Kendo().DropDownListFor(model => model.PortOfEntryId).OptionLabel("Select Port of Entry...").BindTo(ViewBag.PortOfEntryId))
@Html.ValidationMessageFor(model => model.PortOfEntryId)
</
div
>
</
div
>
@* <
div
style
=
"float: right;"
>
<
a
href
=
"#"
class
=
"k-button show_hide"
style
=
"text-align: right;"
>Hide</
a
>
</
div
>*@
</
div
>
@* <
div
class
=
"k-block k-info-colored"
id
=
"vesselShowButton"
style
=
"text-align: right;"
>
<
a
href
=
"#"
class
=
"k-button show_hide"
>Show Vessel Info</
a
>
</
div
>*@
<
div
class
=
"k-block"
>
<
div
class
=
"dates"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.EstimatedDepartureDate)
</
div
>
<
div
class
=
"editor-field"
>
@Html.EditorFor(model => model.EstimatedDepartureDate)
@Html.ValidationMessageFor(model => model.EstimatedDepartureDate)
</
div
>
</
div
>
<
div
class
=
"dates"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.EstimatedArrivalDate)
</
div
>
<
div
class
=
"editor-field"
>
@Html.EditorFor(model => model.EstimatedArrivalDate)
@Html.ValidationMessageFor(model => model.EstimatedArrivalDate)
</
div
>
</
div
>
<
div
class
=
"dates"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.DepartureDate)
</
div
>
<
div
class
=
"editor-field"
>
@Html.EditorFor(model => model.DepartureDate)
@Html.ValidationMessageFor(model => model.DepartureDate)
</
div
>
</
div
>
<
div
class
=
"dates"
>
<
div
class
=
"editor-label"
>
@Html.LabelFor(model => model.ArrivalDate)
</
div
>
<
div
class
=
"editor-field"
>
@Html.EditorFor(model => model.ArrivalDate)
@Html.ValidationMessageFor(model => model.ArrivalDate)
</
div
>
</
div
>
</
div
>
<
div
class
=
"k-block"
>
<
table
class
=
"quantities"
>
<
tr
>
<
th
></
th
>
<
th
>Unit</
th
>
<
th
>Sizes:</
th
>
@foreach (SelectListItem item in ViewBag.ProductSizeId)
{
<
th
>@item.Text</
th
>
}
</
tr
>
<
tr
>
<
td
style
=
"font-size: smaller;"
>Quantity in</
td
>
<
td
>lugs</
td
>
<
td
></
td
>
@foreach (SelectListItem item in ViewBag.ProductSizeId)
{
<
td
>@(Html.Kendo().NumericTextBox<
double
>()
.Name(item.Text)
.Format("##,#")
.Spinners(false)
)</
td
>
}
</
tr
>
</
table
>
</
div
>
</
div
>
<
script
>
$(function () {
//var ddLists = $(".HABddList").each(
// function () {
// // $(this).data("kendoDropDownList").list.width("auto");
// alert('hi');
// setWidth($("this"));
// });
setWidth($("#ddlOrganization"));
//$(".vesselinfo").hide();
//$(".show_hide").show();
//$('.show_hide').click(function () {
// $(".vesselinfo").slideToggle();
// $("#vesselShowButton").slideToggle();
//});
});
function setWidth(el) {
var d = el;
var p = d.data("kendoDropDownList").popup.element;
var w = p.css("visibility", "hidden").show().outerWidth() + 30;
p.hide().css("visibility", "visible");
d.closest(".k-widget").width(w);
}
</
script
>
<
style
scoped>
.k-numerictextbox {
max-width: 50px;
margin: 0px;
padding: 0;
}
.show_hide {
display: none;
}
.dates {
display: inline-block;
margin-left: 1em;
}
.dates:nth-of-type(1) {
margin-left: 0;
}
.quantities {
border-collapse: collapse;
border-spacing: 0;
border: solid 1px;
}
.quantities th {
min-width: 40px;
max-width: 50px;
text-align: center;
font-size: 1em;
border: solid 1px;
margin: 0.5em 0.5em;
}
.quantities th:nth-of-type(1) {
width: 35px;
}
.quantities td {
text-align: center;
padding: 0;
border: solid 1px;
}
</
style
>