现在的位置: 首页 > 综合 > 正文

Ext.Net GridPanel中的row展开

2013年09月11日 ⁄ 综合 ⁄ 共 7384字 ⁄ 字号 评论关闭

前台在GridPane中添加的code:

 <Plugins>
                            <ext:RowExpander ID="RowExpander1" runat="server" EnableCaching="true">
                                <Template runat="server">
                                    <Html>
                                    <div id="row-{Code}" style="background-color: White;"></div>
                                    </Html>
                                </Template>
                               <DirectEvents>
                                    <Expand OnEvent="BeforeExpand" Before="return !body.rendered;" Success="body.rendered=true;">
                                        <EventMask ShowMask="true" Target="CustomTarget" CustomTarget="={DetailGridPanel.body}" />
                                        <ExtraParams>
                                            <ext:Parameter Name="id" Value="record.id" Mode="Raw" />
                                            <ext:Parameter Name="Code" Value="record.get('Code')" Mode="Raw" />
                                        </ExtraParams>
                                    </Expand>
                                </DirectEvents>
                            </ext:RowExpander>
</Plugins>

后台的code:

  protected void BeforeExpand(object sender, DirectEventArgs e)
        {
            string id = e.ExtraParams["id"];
            string Code = e.ExtraParams["Code"];
            Store store = new Store { ID = "StoreRow_" + Code };
            JsonReader reader = new JsonReader();
            reader.IDProperty = "ID";
            reader.Fields.Add("ID", "GoodsID", "Quantity", "FinishQuantity");

            reader.Fields[1].ServerMapping = "Goods.Name";

            store.Reader.Add(reader);
            Guid stockInApplyId = new Guid(id);
            Haso.Swms.Client.BPMethodInvoker bpmit = new BPMethodInvoker();
            object[] paramList = new object[] { stockInApplyId };
            object obj = new object();
            // 查询出库申请单
            bpmit.InvokeMethod("Haso.Swms.BusinessProcess.Stock.StockInApplyBP", "FindByID", paramList, ref obj);
            StockInApply soa = obj as StockInApply;
            if (soa != null)
            {
                if (soa.Details != null && soa.Details.Count > 0)
                {
                    store.DataSource = soa.Details;
                    store.DataBind();
                }
            }
          this.RemoveFromCache(store.ID);
            store.Render();
          this.AddToCache(store.ID);

            GridPanel grid = new GridPanel
            {
                ID = "GridPanelRow_" + Code,
                StoreID = "{raw}StoreRow_" + Code,
                Height = 200
            };

            grid.ColumnModel.Columns.Add(new Column
            {
                Header = "货品",
                DataIndex = "GoodsID"
            });
            grid.ColumnModel.Columns.Add(new Column
            {
                Header = "数量",
                DataIndex = "Quantity"
            });
            grid.ColumnModel.Columns.Add(new Column
            {
                Header = "实际数量",
                DataIndex = "FinishQuantity"
            });
            grid.ColumnModel.ID = "GridPanelRowCM_" + Code;

            grid.View.Add(new Ext.Net.GridView { ID = "GridPanelRowView_" + Code, ForceFit = true });
            grid.AutoHeight = true;
            //important,禁止几个方法
            X.Get("row-" + Code).SwallowEvent(new string[] { "click", "mousedown", "mouseup", "dblclick" }, true);

            this.RemoveFromCache(grid.ID);

//渲染前台定义的RowExpander
            grid.Render("row-" + Code, RenderMode.RenderTo);
            this.AddToCache(grid.ID);
        }

js中的code:

 window.lookup = [];
        var removeFromCache = function(c) {
            var c = window[c];
            window.lookup.remove(c);

            if (c) {
                c.destroy();
            }
        };

        var addToCache = function(c) {
            window.lookup.push(window[c]);
        };

另外可以在<Plugins>用组件添加:

  <Plugins>
                            <ext:RowExpander ID="RowExpander" runat="server">
                                <Component>
                                    <ext:GridPanel runat="server" ID="DetailGridPanel1" StoreID="DetailStore_info" StripeRows="true" Border="true"

                                        AutoScroll="true" AutoHeight="true">
                                       <%--<SelectionModel>
                                            <ext:RowSelectionModel ID="RowSelection1" runat="server" />
                                        </SelectionModel>--%>
                                        <ColumnModel>
                                            <Columns>
                                                <ext:Column Header="货品" Width="180" DataIndex="GoodsID">
                                                    <Renderer Fn="GoodsNameEditorRenderer" />
                                                    <Editor>
                                                        <ext:ComboBox StoreID="GoodsStore" ID="GoodsID" runat="server" ValueField="ID" DisplayField="Name" Shadow="Drop"
                                                            Mode="Local" TriggerAction="All" ForceSelection="true">
                                                        </ext:ComboBox>
                                                    </Editor>
                                                </ext:Column>
                                                <ext:NumberColumn Header="数量" Width="100" DataIndex="Quantity" Align="Right">
                                                    <Editor>
                                                        <ext:NumberField ID="Quantity" runat="server" MinValue="0" DataIndex="Quantity" AllowBlank="false">
                                                        </ext:NumberField>
                                                    </Editor>
                                                </ext:NumberColumn>
                                                <ext:NumberColumn Header="价格" Width="80" DataIndex="Price" Hideable="false" Align="Right" Hidden="true">
                                                    <Editor>
                                                        <ext:NumberField ID="Price" runat="server" MinValue="0" DataIndex="Price" AllowBlank="false">
                                                        </ext:NumberField>
                                                    </Editor>
                                                </ext:NumberColumn>
                                                <ext:Column Header="实际数量" Width="100" DataIndex="FinishQuantity" Align="Right">
                                                </ext:Column>
                                            </Columns>
                                        </ColumnModel>
                                    </ext:GridPanel>
                                </Component>
                                <Template runat="server">
                                    <Html>
                                    <div id="#{DetailGridPanel}.getSelectionModel().getSelected().json.ID" style="background-color: White;"></div>
                                    </Html>
                                </Template>
                                <DirectEvents>
                                    <BeforeExpand OnEvent="BeforeExpand">
                                        <EventMask ShowMask="true" Target="CustomTarget" CustomTarget="={DetailGridPanel.body}" />
                                        <ExtraParams>
                                            <ext:Parameter Name="id" Value="record.id" Mode="Raw" />
                                        </ExtraParams>
                                    </BeforeExpand>
                                </DirectEvents>
                            </ext:RowExpander>
</Plugins>

 

 

【上篇】
【下篇】

抱歉!评论已关闭.