Hi,
We have a little problem with control @html.kendo().CurrencyTextBox. We have a view where we have definite a CurrencyTextBox, this view is called from a grid from method .EditorTemplateName(“View”)
I send you two images, one image in Internet Explorer with correct format and another from Mozilla Firefox.
Now I show you the code grid from main view:
01.
@(Html.Kendo().Grid<ValoritzablesViewModel>()
02.
.Name(
"refundables"
)
03.
.HtmlAttributes(
new
{ style =
"height: 100%; border: 0;"
})
04.
.ToolBar(t =>
05.
{
06.
if
(User.IsInRole(
"Modify"
))
07.
{
08.
t.Save().SaveText(
"Validar"
);
09.
}
10.
})
11.
.Columns(columns =>
12.
{
13.
columns.ForeignKey(f => f.CentreID, (System.Collections.IEnumerable)ViewBag.Centres,
"ContactID"
,
"Nom"
).Width(120);
14.
columns.ForeignKey(f => f.CycleID, (System.Collections.IEnumerable)ViewBag.BillingCycles,
"OptionID"
,
"Name"
).EditorTemplateName(
"CustomGridForeignKey"
).Width(90);
15.
columns.Bound(f => f.CodFact).Width(100);
16.
columns.Bound(f => f.ProductorName);
17.
columns.Bound(f => f.DataServei).Width(100);
18.
columns.Bound(f => f.ServiceID).Width(80);
19.
columns.Bound(f => f.RefExt).Width(80);
20.
columns.Bound(f => f.DocNum).Width(100);
21.
columns.ForeignKey(f => f.Reference, (System.Collections.IEnumerable)ViewBag.CatalegResidus,
"Value"
,
"Text"
);
22.
columns.Bound(f => f.Quantitat).Width(80);
23.
columns.Bound(f => f.Preu).ClientTemplate(
"#: kendo.toString(data.Preu, 'C2') # ("
+
24.
"# if (data.RefundFare == "
+ (
short
)fareType.Custom +
") { #Contracte"
+
25.
"# } else if (data.RefundFare == "
+ (
short
)fareType.Standard +
") { #Standard"
+
26.
"# } else if (data.RefundFare == "
+ (
short
)fareType.Premium +
") { #Premium"
+
27.
"# } else if (data.RefundFare == "
+ (
short
)fareType.AdHoc +
") { #Puntual"
+
28.
"# } else { #General"
+
29.
"# } #)"
).EditorTemplateName(
"RefundFare"
).Width(350);
30.
columns.Template(@<text></text>)
31.
.ClientTemplate(
"<input type='checkbox' #= Generate ? checked='checked':'' # class='chkbx' />"
)
32.
.HeaderTemplate(
"<input type='checkbox' id='checkAllRecords' onclick='checkAll(this)' />"
)
33.
.Width(36);
34.
})
35.
.Editable(editable =>
36.
{
37.
if
(User.IsInRole(
"Modify"
))
38.
{
39.
editable.Mode(GridEditMode.InCell);
40.
}
41.
else
42.
{
43.
editable.Enabled(
false
);
44.
}
45.
})
46.
.Pageable(pageable => pageable.Refresh(
true
))
47.
.Scrollable()
48.
.Sortable()
49.
.Filterable()
50.
.DataSource(dataSource => dataSource
51.
.Ajax()
52.
.Batch(
true
)
53.
.PageSize(30)
54.
.Model(model =>
55.
{
56.
model.Id(a => a.DetailID);
57.
model.Field(f => f.CentreID).Editable(
false
);
58.
model.Field(f => f.ServiceID).Editable(
false
);
59.
model.Field(f => f.DataServei).Editable(
false
);
60.
model.Field(f => f.RefExt).Editable(
false
);
61.
model.Field(f => f.DocNum).Editable(
false
);
62.
model.Field(f => f.ProductorName).Editable(
false
);
63.
model.Field(f => f.CodFact).Editable(
false
);
64.
model.Field(f => f.CycleID).Editable(
false
);
65.
model.Field(f => f.Reference).Editable(
false
);
66.
model.Field(f => f.Quantitat).Editable(
false
);
67.
})
68.
.Events(e => e
69.
.Error(@<text>
70.
function (e) {
71.
onError(e,
"refundables"
);
72.
}
73.
</text>)
74.
.RequestEnd(@<text>
75.
function (e) {
76.
onRefundRequestEnd(e);
77.
}
78.
</text>))
79.
.Sort(s => s.Add(f => f.DataServei).Descending())
80.
.Read(
"RefundRead"
,
"Payments"
)
81.
.Update(
"RefundValidate"
,
"Payments"
)
82.
)
83.
)
And for finish I show you code with view RefundFare with CurrencyTextBox control:
01.
@
using
SGI2014.Models;
02.
@model
object
03.
04.
<script type=
"text/javascript"
>
05.
var row = $(
event
.srcElement).closest(
"tr"
);
06.
var grid = $(
event
.srcElement).closest(
"[data-role=grid]"
).data(
"kendoGrid"
);
07.
var currentDataItem = grid.dataItem(row);
08.
09.
function onPreuChange() {
10.
@*var radios = document.getElementsByName(
"RefundFare"
);
11.
for
(i = 0; i < radios.length; i++) {
12.
radios[i].
checked
= (radios[i].value == @((
short
)fareType.AdHoc));
13.
}*@
14.
@*var radio = $(
"input[value='@((short)fareType.AdHoc)']"
);
15.
radio.prop(
"checked"
,
true
);
16.
currentDataItem.RefundFare = @((
short
)fareType.AdHoc);*@
17.
currentDataItem.
set
(
'RefundFare'
, @((
short
)fareType.AdHoc));
18.
currentDataItem.
set
(
'Generate'
,
true
);
19.
grid.refresh();
20.
}
21.
22.
function onRefundFareClick(e) {
23.
//var ctb = $("#Preu").data("kendoNumericTextBox");
24.
if
(e.value == @((
short
)fareType.AdHoc)) {
25.
//ctb.value("");
26.
//currentDataItem.Preu = 0;
27.
currentDataItem.
set
(
'Preu'
, 0);
28.
}
else
{
29.
$.ajax({
30.
cache:
false
,
31.
url:
'@Url.Action("GetFarePrice", "Payments")'
,
32.
//data: { fare: e.value, detailID: getParentID() },
33.
data: { fare: e.value, detailID: currentDataItem.DetailID },
34.
success: function (received) {
35.
//ctb.value(received);
36.
//currentDataItem.Preu = received;
37.
currentDataItem.
set
(
'Preu'
, received);
38.
}
39.
})
40.
}
41.
currentDataItem.
set
(
'Generate'
,
true
);
42.
grid.refresh();
43.
}
44.
45.
//function getParentID() {
46.
// var row = $(event.srcElement).closest("tr");
47.
// var grid = $(event.srcElement).closest("[data-role=grid]").data("kendoGrid");
48.
// var currentDataItem = grid.dataItem(row);
49.
// return currentDataItem.DetailID;
50.
//}
51.
</script>
52.
53.
@(Html.Kendo().CurrencyTextBox()
54.
.Name(
"Preu"
)
55.
.HtmlAttributes(
new
{ style =
"width:100px"
})
56.
.Events(e => e.Change(
"onPreuChange"
))
57.
)
58.
59.
<input type=
'radio'
name=
'RefundFare'
value=
'@((short)fareType.Standard)'
onclick=
"onRefundFareClick(this)"
>Standard
60.
<input type=
'radio'
name=
'RefundFare'
value=
'@((short)fareType.Premium)'
onclick=
"onRefundFareClick(this)"
>Premium
61.
<input type=
'radio'
name=
'RefundFare'
value=
'@((short)fareType.Custom)'
onclick=
"onRefundFareClick(this)"
>Contracte
62.
<input type=
'radio'
name=
'RefundFare'
value=
'@((short)fareType.AdHoc)'
onclick=
"onRefundFareClick(this)"
>Puntual
Thanks in advance.
Xavier de la Rubia.