У меня есть два каскадных раскрывающихся списка Kendo в шаблоне сетки. Они работают нормально, пока я не попытаюсь отключить их при редактировании.
Я хочу разрешить пользователю использовать раскрывающиеся списки как обычно при создании новой записи (это работает), однако, когда выбран параметр редактирования, я хочу, чтобы раскрывающиеся списки были заполнены информацией о модели из выбранной записи, но я хочу, чтобы все три были отключены, только если это редактирование.
Моя сетка выглядит следующим образом:
@(Html.Kendo().Grid<OrderTypeRulesClass>()
.Name("OrderTypeCapacityGrid")
.Columns(columns =>
{
columns.Bound(p => p.OrderTypeid).Title("Order Type ID").Hidden(true).Width(88);
columns.Bound(p => p.CapacityOrderTypeid).Title("Order Type ID").Hidden(true).Width(88);
columns.Bound(p => p.ClientID).Hidden(true).Title("Client ID").Width(90);
columns.Bound(p => p.SiteID).Hidden(true).Title("Site ID").Width(90);
columns.Bound(p => p.ClientName).Title("Client Name").Width(180);
columns.Bound(p => p.SiteName).Title("Site Name").Width(180);
columns.Bound(p => p.OrderCode).Title("Code").Width(90);
columns.Bound(p => p.OrderTypeDesc).Title("Description").Width(180);
columns.Bound(p => p.CapacityPerDay).Title("Capacity Per Day").Width(180);
columns.Bound(p => p.Constrained).Title("Constrained").Width(180);
if ((cCore.HasAction("CanEditOrderTypes") == true))
{
columns.Command(command => { command.Edit().Text(" "); command.Destroy().Text(" "); }).Width(100);
}
})
.Groupable()
.Pageable()
.ToolBar(toolbar =>
{
if ((cCore.HasAction("CanEditOrderTypes") == true))
{
toolbar.Create().Text("Add New Order Type Capacity");
}
})
.Editable(editable => editable
.Mode(Kendo.Mvc.UI.GridEditMode.PopUp)
.TemplateName("OrderTypeCapacity_Edit")
.Window(w => w.Title("Maintain Order Type Capacity"))
)
.Scrollable(s => s.Height("auto"))
.Filterable()
.ColumnMenu()
.AutoBind(true)
.Events(e => e.Edit("onEdit"))
.DataSource(d => d
.Ajax()
.Model(model => model.Id(p => p.CapacityOrderTypeid))
.Events(e => { e.RequestEnd("request_end_capacity"); e.Error("error_handler"); })
.Read(r => r.Action("SearchOrderTypeCapacity", "SystemMaintenance").Data("getSearchArgs_Capacity"))
.Create(update => update.Action("Popup_CreateOrderTypeCapacity", "SystemMaintenance"))
.Update(update => update.Action("Popup_UpdateOrderTypeCapacity", "SystemMaintenance"))
.Destroy(update => update.Action("Popup_DeleteOrderTypeCapacity", "SystemMaintenance"))
.PageSize(20)
)
)
У меня есть функция javascript на моем главном экране, где отображается сетка:
function onEdit(e)
{
debugger;
if (e.model.isNew())
{
}
else
{
//$("#SiteID").data("kendoDropDownList").value(e.model.SiteID);
$("#ClientID").kendoDropDownList({
enable: false
});
}
}
Вид моего шаблона выглядит следующим образом:
<table>
<tr>
<td>
@Html.LabelFor(m => m.ClientName, "Client Name: ")
</td>
<td>
@(Html.Kendo().DropDownListFor(m => m.ClientID)
.HtmlAttributes(new { style = "width:100%" })
.OptionLabel("Select a Client...")
.DataTextField("ClientName")
.DataValueField("ClientID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("RetrieveClients", "SystemMaintenance");
});
})
)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(m => m.SiteName, "Site Name: ")
</td>
<td>
<script>
function filterSite() {
return {
ClientID: $("#ClientID").val()
};
}
</script>
@(Html.Kendo().DropDownListFor(m => m.SiteID)
.HtmlAttributes(new { style = "width:100%" })
.OptionLabel("Select a Site...")
.DataTextField("SiteName")
.DataValueField("SiteID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("RetrieveSites", "SystemMaintenance").Data("filterSite");
})
.ServerFiltering(true);
})
.Enable(false)
.AutoBind(false)
.CascadeFrom("ClientID")
)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(m => m.OrderTypeDesc, "Order Type: ")
</td>
<td>
@(Html.Kendo().DropDownListFor(m => m.CapacityOrderTypeid)
.Name("CapacityOrderTypeid")
.DataTextField("OrderTypeDesc")
.DataValueField("CapacityOrderTypeid")
.HtmlAttributes(new { style = "width:300px; " })
.DataSource(source =>
{
source.Read(read =>
{
read.Action("RetrieveCapacityOrderTypes", "SystemMaintenance");
}).ServerFiltering(true);
})
.OptionLabel("Select an Order Type...")
)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(m => m.CapacityPerDay, "Capacity Per Day: ")
</td>
<td>
@Html.EditorFor(m => m.CapacityPerDay, new { htmlAttributes = new { @type = "number", @min = "0", @step = "1", @value = "0" } })
</td>
</tr>
<tr>
<td>
@Html.LabelFor(m => m.Constrained, "Capacity: ")
</td>
<td>
@Html.CheckBoxFor(m => m.Constrained)
</td>
</tr>
</table>
Моя проблема заключается в том, что первое раскрывающееся меню заполняется выбранным значением модели, а второе - нет, если я отключу раскрывающийся список. Если я не отключу его, он заполнится правильно, и все в порядке. так я отключил его в неправильном месте? Как отключить каскадирование раскрывающихся списков только при редактировании.