立即注册 登录
99Max综合娱乐网站(旧版) 返回首页

hudingwen的个人空间 https://old.99max.me/?1863 [收藏] [复制] [分享] [RSS]

日志

计算单列总值的解决方案

已有 601 次阅读2010-7-19 17:28 |个人分类:

计算单列总值的解决方案
coolite, gridpanel本帖最后由 一脸坏笑 于 2009-11-19 07:44 编辑 
 
<%@ Page Language="C#" %><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
 
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Ext.IsAjaxRequest)
        {
            this.Store1.DataSource = new object[]
            {
                new object[] {"3m Co", 71.72, 11.72},
                new object[] {"Alcoa Inc", 29.01, 21.72},
                new object[] {"Altria Group Inc", 83.81, 31.72},
                new object[] {"American Express Company", 52.55, 41.72},
                new object[] {"American International Group, Inc.", 64.13, 51.72}
            };
 
            this.Store1.DataBind();
        }
    }
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
 
    <script type="text/javascript">
        var initSummaryRecord = function() {
            var r = this.addRecord().record;
            r.isSummary = true;
            calculate(this, ['price', 'price1']);
        }
 
        var calculate = function(store, field) {
            if (Ext.isArray(field)) {
                for (var i = 0; i < field.length; i++) {
                    calculate(store, field[i]);
                }
                return;
            }
            var sum = 0,
                summaryRecord;
            store.each(function(r) {
                if (r.isSummary) {
                    summaryRecord = r;
                    return;
                }
                sum += r.get(field);
            });
 
            summaryRecord.set(field, sum); 
            summaryRecord.commit();
        }
 
        var priceRenderer = function(value, meta, r) {
            var s = Ext.util.Format.usMoney(value);
            if (r.isSummary) {
                s = "<b>" + s + "</b>";
            }
 
            return s;
        } 
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <ext:ScriptManager ID="ScriptManager1" runat="server" />
 
        <ext:Store ID="Store1" runat="server">
            <Reader>
                <ext:ArrayReader>
                    <Fields>
                        <ext:RecordField Name="company" />
                        <ext:RecordField Name="price" Type="Float" />
                        <ext:RecordField Name="price1" Type="Float" />
                    </Fields>
                </ext:ArrayReader>
            </Reader>
 
            <Listeners>
                <Load Fn="initSummaryRecord" />
            </Listeners>
        </ext:Store>
 
        <ext:GridPanel 
            ID="GridPanel1" 
            runat="server" 
            StoreID="Store1" 
            Title="Grid" 
            Width="600" 
            Height="350"
            AutoExpandColumn="Company">
            <ColumnModel ID="ColumnModel1" runat="server">
                <Columns>
                    <ext:Column ColumnID="Company" Header="Company" Sortable="true" DataIndex="company" />
                    <ext:Column Header="Price" Sortable="true" DataIndex="price">
                        <Renderer Fn="priceRenderer" />
                        <Editor>
                            <ext:NumberField ID="NumberField1" runat="server" />
                        </Editor>
                    </ext:Column>                   
                    <ext:Column Header="Price1" Sortable="true" DataIndex="price1">
                        <Renderer Fn="priceRenderer" />
                        <Editor>
                            <ext:NumberField ID="NumberField2" runat="server" />
                        </Editor>
                    </ext:Column>  
                </Columns>
            </ColumnModel>
            <SelectionModel>
                <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true" />
            </SelectionModel>
 
            <Listeners>
                <BeforeEdit Handler="return e.record.isSummary !== true;" />
                <AfterEdit Handler="if(['price','price1'].indexOf(e.field) !== -1){calculate(this.store,e.field);}" />
              </Listeners>
        </ext:GridPanel>         
    </form>
</body>
</html>

全部作者的其他最新日志

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|99Max综合娱乐网站(旧版) ( 沪ICP备11024206号-1 )

GMT+8, 2026-4-2 02:35 , Processed in 0.050798 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部