Я использую сетку Telerik в представлении ASP. NET MVC. Я совершенно новичок в Telerik.
Моя сетка Telerik выглядит следующим образом:
@(Html.Telerik().Grid<MyDTOs.DetalleDTO>()
.Name("GridActividadesOferta")
.DataKeys(keys =>
{
keys.Add(d => d.indiceInterno).RouteKey("indiceInterno");
})
.Columns(columns =>
{
columns.Bound(cl => cl.nombreActividad).Title(Inspecciones.lblGridActividad.ToUpper()).ReadOnly(true).HtmlAttributes(new { @class = "actividad-column" });
columns.Bound(cl => cl.nombreSubActividad).Title(Inspecciones.lblGridSubActividad.ToUpper()).ReadOnly(true);
columns.Bound(cl => cl.articuloId).Title(Inspecciones.lblGridArticulo.ToUpper()).ReadOnly(true);
columns.Bound(cl => cl.CCAA_Expediente).Title("Expediente".ToUpper()).ReadOnly(false).Width(100);
columns.Bound(cl => cl.CCAA_Instalacion).Title("Instalación".ToUpper()).ReadOnly(false).Width(100);
columns.Bound(cl => cl.importeArticulo).Title("Importe".ToUpper()).ReadOnly(false).Width(100).Format("{0:c}").ClientFooterTemplate("<#= $.telerik.formatString('Total factura') #>");
columns.Bound(cl => cl.importeTasa).Title(Resources.Inspecciones.lblGridImporteTasa.ToUpper()).ReadOnly(false).Aggregate(aggr => aggr.Sum().Count())
.Width(100)
.Format("{0:c}")
//.ClientFooterTemplate("<#= $.telerik.formatString('{0:c}'," + Model.totalFactura + ")#>")
.ClientFooterTemplate("<#= '<span id=spanTotalFactura>' + $.telerik.formatString('{0:c}'," + Model.totalFactura + ") + '</span>' #>")
.Width(100)
.Format("{0:c}");
columns.Command(commands =>
{
commands.Edit().ButtonType(GridButtonType.Image);
commands.Delete().ButtonType(GridButtonType.Image);
}).Width(100).Visible(!ViewBag.readOnly);
})
.DataBinding(dataBinding =>
{
dataBinding.Ajax()
.Select("SelectGridVacias1", "Expedientes", new { ofertaComercialId = @Model.ofertaComercialId })
.Update("UpdateGridActividadesRegularizables1", "Expedientes", new { ofertaComercialId = @Model.ofertaComercialId })
.Delete("DeleteGridActividadesRegularizables1", "Expedientes", new { ofertaComercialId = @Model.ofertaComercialId })
;
})
.ClientEvents(events => events.OnDataBinding("onDataBindingArticulosGrid").OnDataBound("onDataBoundWrapper").OnEdit("onEditDatosArticulo")
.OnRowDataBound("onRowDataBound").OnDelete("onDelete").OnError("onErrorGrid"))
.HtmlAttributes(new { @class = "center-columns" })
.Selectable()
.Editable(editing =>
{
editing
.Mode(GridEditMode.PopUp)
.TemplateName("DatosArticuloTemplate1")
.InsertRowPosition(GridInsertRowPosition.Top);
})
)
Как вы можете видеть выше, у меня определены две команды, Edit и Delete. Кнопка редактирования имеет собственный шаблон, указанный в «.Editable». Этот шаблон называется «DatosArticuloTemplate1» и выглядит следующим образом:
<div style="width:800px">
<div class="row-fluid">
<div class="span12">
@Html.Label("nombreArticulo", "Descripcion actual".ToUpper())
@Html.TextAreaFor(m => m.nombreArticuloFacturacion, new { style = string.Format("width:{0}px; ", 800) })
@Html.ValidationMessage("instalacionId")
</div>
</div>
<div class="row-fluid">
<div class="span2">
@Html.Label("importeArticulo", "Importe".ToUpper())
@(Html.Telerik().NumericTextBoxFor(model => model.importeArticulo).EmptyMessage("Importe").DecimalDigits(2).InputHtmlAttributes(new { style = "width:90px;" }))
</div>
<div class="span3">
@Html.Label("importeTasa", "Importe de tasa".ToUpper())
@(Html.Telerik().NumericTextBoxFor(model => model.importeTasa).EmptyMessage("Importe").DecimalDigits(2).InputHtmlAttributes(new { style = "width:90px;" }).Value(0))
</div>
<div class="span7">
@Html.Label("unidades", "Instalación".ToUpper())
@{Html.RenderAction("DropDownListInstalaciones", "SeleccionarInstalacionButton",
new
{
area = "",
clienteId = Model.OfertaComercial == null ? "" : Model.OfertaComercial.clienteId,
actividadId = Model.actividadId,
subActividadId = Model.subActividadId,
sociedadId = Model.OfertaComercial == null ? "" : Model.OfertaComercial.sociedadId,
dataBindTo = "instalacionId"
});
}
</div>
</div>
</div>
Этот пользовательский шаблон выглядит следующим образом:
Как видно из нижнего левого угла пользовательского шаблона, есть две кнопки: одна для подтверждения введенных значений (толстая кнопка), а другая для отмены. Эти кнопки от Telerik.
Теперь я пытаюсь обработать событие нажатия на толстую кнопку. В событии клика я хочу проверить значение, введенное для поля «ИМПОРТ». Если значение, введенное для этого поля, равно 0, тогда я хочу открыть модальное окно javascript. Это окно предупреждения должно уведомлять пользователя о том, что для этого поля должно быть введено значение больше 0. Кроме того, пользовательское окно шаблона «DatosArticuloTemplate1» не должно закрываться, пока пользователь не введет правильное значение (значение> 0) в поле «ИМПОРТ». Так как я могу это сделать?