Aug 22, 2017, 3:54 PM
[FIXED] [#1531] [4.4.0] Calculated Field Persist Property
I have a calculated field that I have set Persist=true, but this setting doesn't get applied and the field ends up with Persist=false because this is the default for calculated fields. The extjs docs say that a calculated field has persist=false by default, but it should be possible to override this setting.
Please see the following example, and try running "App.GridPanel1.store.getFieldByName("calculated") .persist" from F12:
Please see the following example, and try running "App.GridPanel1.store.getFieldByName("calculated") .persist" from F12:
<%@ Page Language="C#" %>
<script runat="server">
/// <summary>
/// Possible arguments:
/// - string action
/// - string action, Dictionary<string, object> extraParams
/// - string action, Dictionary<string, object> extraParams, object serviceParams
/// </summary>
/// <returns></returns>
[DirectMethod]
public static object BindData()
{
return Data;
}
private static object[] Data
{
get
{
DateTime now = DateTime.Now;
return new object[]
{
new object[] { "3m Co", 71.72, 0.02, 0.03, now },
new object[] { "Alcoa Inc", 29.01, 0.42, 1.47, now },
new object[] { "Altria Group Inc", 83.81, 0.28, 0.34, now }
};
}
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<title>PageProxy with DirectMethod - Ext.NET Examples</title>
<link href="/resources/css/examples.css" rel="stylesheet" />
<script>
var template = '<span style="color:{0};">{1}</span>';
var change = function (value) {
return Ext.String.format(template, (value > 0) ? "green" : "red", value);
};
var pctChange = function (value) {
return Ext.String.format(template, (value > 0) ? "green" : "red", value + "%");
};
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<h1>PageProxy with DirectMethod</h1>
<ext:GridPanel
ID="GridPanel1"
runat="server"
Title="Array Grid"
Width="700"
Height="310" BufferedRenderer="true" LeadingBufferZone="10" NumberFromEdge="10" >
<Store>
<ext:Store ID="Store1" runat="server" PageSize="10">
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="company" />
<ext:ModelField Name="price" Type="Float" />
<ext:ModelField Name="change" Type="Float" />
<ext:ModelField Name="calculated" Persist="true">
<Calculate Handler="return data.price * 2;"></Calculate>
</ext:ModelField>
<ext:ModelField Name="pctChange" Type="Float" />
<ext:ModelField Name="lastChange" Type="Date" />
</Fields>
</ext:Model>
</Model>
<Proxy>
<ext:PageProxy DirectFn="App.direct.BindData">
<Reader>
<ext:ArrayReader />
</Reader>
</ext:PageProxy>
</Proxy>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:RowNumbererColumn runat="server" Width="35" />
<ext:Column runat="server" Text="Company" DataIndex="company" Flex="1">
</ext:Column>
<ext:Column runat="server" Text="Price" Width="75" DataIndex="price">
<Renderer Format="UsMoney" />
</ext:Column>
<ext:Column runat="server" Text="Change" Width="75" DataIndex="change">
<Renderer Fn="change" />
</ext:Column>
<ext:Column runat="server" Text="Change" Width="75" DataIndex="calculated">
</ext:Column>
<ext:Column runat="server" Text="Change" Width="75" DataIndex="pctChange">
<Renderer Fn="pctChange" />
</ext:Column>
<ext:DateColumn runat="server" Text="Last Updated" Width="85" DataIndex="lastChange" Format="H:mm:ss" />
</Columns>
</ColumnModel>
</ext:GridPanel>
</form>
</body>
</html>