`
lipengcheng0116
  • 浏览: 19290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Extjs4 GridPanel 实例

阅读更多
var store;
Ext.app.ContentItemJKGrid = Ext.extend(Ext.grid.GridPanel,
{
    title: '内容项接口列表',
    region: 'north',
    id: 'am-contentitemjkgrid',
    height: 150,
    ctiId: 0,
    ctiName: '',
    wsId: 0,
    viewConfig:
	{
	    id: 'ctigv',
	    trackOver: true,
	    stripeRows: true
	},
    initComponent: function () {
        var me = this;
        var ctism = new Ext.selection.CheckboxModel({
            id: "ctiJKwsId",
            dataIndex: 'CtiId',
            mode: 'SINGLE',   //设置Checkbom只能选中一个
            listeners: {
                'select': function (sm, rowIndex, record) {
                    ctijkClick();
                }
            }
        });
        this.columns =
	    [
		    {
		        id: 'ctiJKgridName',
		        header: '内容项名称',
		        width: 300,
		        sortable: true,
		        dataIndex: 'CtItemName'
		    },
		    {
		        id: 'ctiJKgridwsName',
		        width: 400,
		        header: 'Web Sevice名称',
		        dataIndex: 'WsName'
		    },
		    {
		        id: 'ctiJKgridExplain',
		        width: 400,
		        header: '数据库表名',
		        dataIndex: 'TableName'
		    }
	    ];
        this.selModel = ctism;
        Ext.define('Ext.app.ContentItemData',
		{
		    extend: 'Ext.data.Model',
		    fields:
			[
		    //第一个字段需要指定mapping,其他字段,可以省略掉。 
				{
				name: 'CtItemName',
				mapping: 'CtItemName',
				type: 'string'
},
				{
				    name: 'WsName',
				    type: 'string'
				},
				{
				    name: 'TableName',
				    type: 'string'
				},
				{
				    name: 'CtiId',
				    type: 'int'
				},
				{
				    name: 'Id',
				    type: 'int'
				},
				{
				    name: 'WsId',
				    type: 'string'
				}
			]
		});
        store = Ext.create('Ext.data.Store',
		{
		    model: 'Ext.app.ContentItemData',
		    pageSize: 20,
		    proxy:
			{
			    type: 'ajax',
			    url: 'Data/CtItemInterface/CtItemInterfaceInfo.aspx?param=select',
			    reader:
				{
				    type: 'json',
				    root: 'items',
				    totalProperty: 'total'
				}
			},
		    listeners: {
		        load: function () {
		            var addClick = Ext.getCmp("ctiJKAdd");
		            var EditClick = Ext.getCmp("ctiJKEdit");
		            var deleteClick = Ext.getCmp("ctiJKdelete");
		            if (addClick) {
		                if (me.ctiId == 0) addClick.disabled = true;
		                else addClick.disabled = false;
		            }
		            if (EditClick) {
		                if (me.ctiId == 0) EditClick.disabled = true;
		                else EditClick.disabled = false;
		            }
		            if (deleteClick) {
		                if (me.ctiId == 0) deleteClick.disabled = true;
		                else deleteClick.disabled = false;
		            }
		            if (me.store.data.length > 0) {
		                me.getSelectionModel().select(0);             // checkbom默认选择一个
		            }
		            ctijkClick();
		        }
		    },
		    autoLoad: true
		});
        Ext.apply(this,
		{
		    store: store,
		    dockedItems:
			[{
			    dock: 'top',
			    xtype: 'toolbar',
			    items:
                [
                    {
                        width: 80,
                        xtype: 'button',
                        id: "ctiJKAdd",
                        text: '添加',
                        store: store,
                        handler: ctijkAdd
                    },
				    {
				        width: 50,
				        xtype: 'button',
				        id: "ctiJKEdit",
				        text: '编辑',
				        store: store,
				        handler: ctijkEdit
				    },
                    {
                        width: 50,
                        xtype: 'button',
                        id: "ctiJKdelete",
                        text: '删除',
                        store: store,
                        handler: ctijkDelete
                    }
                ]
			}]
		});

        ///定义内容项接口删除事件
        function ctijkDelete() {
            var row = me.getSelectionModel().getSelection();
            if (row.length == 0) {
                Ext.Msg.alert("提示", "请选择一行");
            } else {
                Ext.Msg.confirm("提示", "确定删除这" + row.length + "条信息吗?",
				    function (btn) {
				        if (btn == "yes") {
				            Ext.Ajax.request({
				                url: "data/CtItemInterface/CtItemInterfaceManager.aspx?param=DeleteCtItemJk",
				                method: "POST",
				                params: { id: row[0].get("Id") }, //发送的参数
				                success: function (response, option) {
				                    response = Ext.JSON.decode(response.responseText);
				                    if (response.success == true) {
				                        if (response.flag == true) {
				                            Ext.MessageBox.alert("提示", "删除接口成功!");

				                            //刷新列表
				                            me.store.load();
				                        }
				                        else { Ext.MessageBox.alert("错误信息", "删除接口失败!"); }
				                    }
				                    else { Ext.MessageBox.alert("错误信息", response.msg); }
				                },
				                failure: function () { Ext.Msg.alert("提示", "删除失败<br>没有捕获到异常"); }
				            });
				        }
				    })
            }
        }

        ///复选框选择事件
        function ctijkClick() {
            //根据选中的行显示相应内容栏数据
            var ctcgridview = Ext.getCmp('am-contentcolumngrid');
            if (me.store.data.length > 0) {
                ctcgridview.wsName = me.getSelectionModel().getSelection()[0].get("WsName");  //可以给另一个grid属性赋值
                ctcgridview.wsId = me.getSelectionModel().getSelection()[0].get("WsId");
                ctcgridview.ctiName = me.getSelectionModel().getSelection()[0].get("CtItemName");
            } else { ctcgridview.wsId = 0 }
            // alert(ctcgridview.wsId);
            ctcgridview.ctiId = me.ctiId;
            ctcgridview.store.load({
                url: 'Data/ContentColumn/ContentColumnInfo.aspx?param=select',
                params: { msg: me.ctiId }
            });
        }

        //定义内容项接口添加事件
        function ctijkAdd() {
            var ctiWin = Ext.create('Ext.app.ContentItemJKAddForm', { ctiId: me.ctiId, ctiName: me.ctiName });
            ctiWin.show();
        }

        //定义内容项接口编辑事件
        function ctijkEdit() {
            var row = me.getSelectionModel().getSelection();
            if (row.length == 0) {
                Ext.Msg.alert("提示", "请选择一行");
            } else if (row.length > 1) {
                Ext.Msg.alert("提示", "只能选择一行");
            } else if (row.length == 1) {
                var ctiInId = row[0].get('Id');
                if (ctiInId != 0) {
                    var editwin = Ext.create('Ext.app.ContentItemJKEditForm', { Id: ctiInId });
                    editwin.show();
                    Ext.getCmp("am-contentitemjkeditform").getForm().load(
					    {
					        url: "data/CtItemInterface/CtItemInterfaceInfo.aspx?param=selectById",
					        params: { Id: ctiInId },
					        waitTitle: "请等待",
					        waitMsg: "正在加载数据...",
					        success: function (form, action) {

					        },
					        failure: function (form, action) {
					            Ext.Msg.alert("提示", "数据加载失败!");
					        }
					    });
                }
            }
        };
        Ext.app.ContentItemJKGrid.superclass.initComponent.call(this);
    }
});

 using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CtManager.BLL;
using CtManager.Model;
using Newtonsoft.Json;

public partial class Data_CtInterface_CtInterfaceInfo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["param"] == null) 
        {
            Response.Write("");
            return;
        }
        string parameter = Request["param"];
        if (parameter == "select") Response.Write(doCtItemInterface());
        else Response.Write("");
    }


    /// 根据内容项Id内容项接口集合
    private string doCtItemInterface()
    {
        try
        {
            IList<CtItemInterface> ctItemInterface = CtItemInterfaceManager.GetAllCtItemInterfaces(Request["ctItemId"]);
            if (ctItemInterface == null) return "{total:0,items:[]}";
            string json = JavaScriptConvert.SerializeObject(ctItemInterface);
            return "{total:3,items:" + JavaScriptConvert.SerializeObject(ctItemInterface) + "}";
        }
        catch (Exception)
        {
            
            return "{total:0,items:[]}";
        }
    }
}
 
分享到:
评论

相关推荐

    Extjs2.02 Gridpanel

    创建完ColumnModel和Store后,我们可以创建GridPanel实例: ```javascript var grid = new Ext.grid.GridPanel({ store: ds, cm: cm, renderTo: Ext.getBody() }); ``` `store`属性指定了数据源,`cm`设置...

    ExtJS 表格面板GridPanel完整例子

    在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们理解GridPanel的基本结构。GridPanel通常由以下几个主要部分组成: 1. **Store**: 存储数据的...

    ExtJs中gridpanel分组后组名排序实例代码

    本文通过实例代码的形式,详细介绍了在ExtJs的GridPanel组件中实现分组后组名排序的具体步骤。通过自定义GroupingStore和GroupingView的配置,我们可以实现复杂的数据显示和交互功能,使得最终用户在使用GridPanel时...

    汇总Extjs中GridPanel的各个属性与方法.doc.pdf

    1. **store**: 这个属性定义了GridPanel所绑定的数据源,通常是一个Ext.data.Store实例,用于存储和管理数据。 2. **columns/colModel**: 定义了表格的列结构,每个列都是一系列配置项,包括列头文本、数据索引等。...

    ExtJs设置GridPanel表格文本垂直居中示例

    首先,通过`Ext.getCmp("grid_jglb")`获取`GridPanel`的实例,然后利用`getElementById`获取DOM元素。接着,通过`getElementsByTagName("table")`找到所有的表格,再遍历这些表格的每一个单元格,设置它们的CSS样式...

    ExtJS介绍以及GridPanel

    4. 实例化GridPanel:配置GridPanel的各种属性,如高度、宽度、是否可拖动列等,然后将Store和ColumnModel传递给GridPanel。 5. 渲染GridPanel:将GridPanel添加到容器中,完成渲染。 在实际应用中,GridPanel还...

    asp.net下extjs完整实例

    本实例"asp.net下extjs完整实例"将展示如何将这两者完美结合,创建出功能完备、交互性强的Web应用。EXTJS在ASP.NET中的应用,主要体现在客户端的交互和UI展示,而ASP.NET则负责后端的数据处理和逻辑控制。 首先,...

    Extjs4 GridPanel 的几种样式使用介绍

    `Ext.create('Ext.grid.Panel')`是创建GridPanel实例的命令。在这个例子中,我们设置了GridPanel的标题、宽度、高度和渲染位置。`store`属性配置了数据源,这里使用了内存代理`proxy: { type: 'memory' }`,并将数据...

    ExtJS 2.0 GridPanel基本表格简明教程

    GridPanel的xtype为grid,这意味着开发者可以在使用Ext JS的类管理器时,通过简短的'grid'来创建一个新的GridPanel实例。 在ExtJS中使用GridPanel首先需要定义列信息和数据存储器Store。列信息由类Ext.grid....

    extjs gridpanel例子和简单应用

    ### ExtJS GridPanel 使用详解及示例 #### 一、引言 在现代Web应用程序开发中,特别是基于ExtJS框架的应用程序中,`GridPanel`是处理表格数据展示的一个非常重要的组件。它不仅可以帮助开发者轻松地展示数据,还...

    EXTJSEXT实例GridPanel.

    这个实例"EXTJSEXT实例GridPanel"旨在教授如何在EXTJS中创建并使用GridPanel。 GridPanel是EXTJS中的一个核心组件,它允许开发者以网格形式展示数据,支持多种功能,如排序、分页、筛选、编辑等。在EXTJS中,...

    EXTJS4导出excel示例

    // 假设你已经有了一个名为grid的GridPanel实例,其store为store实例 var csvData = ''; store.each(function(record) { var fields = record.data; for (var field in fields) { csvData += fields[field] + ','...

    tapestry4.02中封装ext的GridPanel组件

    4. **设置JavaScript逻辑**:`GridPanel.jwc`文件可能包含了组件的JavaScript配置,用于初始化和配置ExtJS的GridPanel实例。这里通常会涉及数据源的配置、列定义、事件监听器等。 5. **资源文件**:`GridPanel....

    ExtJS4.2源码+实例

    4. **本地及远程分页**:ExtJS 支持两种分页模式:本地分页和远程分页。本地分页适用于数据量较小的情况,而远程分页则通过向服务器发送请求来获取数据,适合大数据集的场景。 5. **单元格自定义渲染**:开发者可以...

    Ext的gridpanel控件二次加载问题

    4. 对于复杂的配置,可以将它们分离到单独的配置对象,需要时再合并到GridPanel实例。 总之,解决Ext的gridpanel控件二次加载时丢失的问题需要对Ext JS的生命周期管理有深入的理解,并结合实际应用场景选择合适的...

    ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox

    ExtJS4中的gridpanel组件提供了一些内置的方法来控制列的可见性,但有时候需要一个更直观的方式来实现这一功能,例如通过一个checkboxgroup来让用户直接勾选哪些列应该显示,哪些列应该隐藏。 为了实现这一功能,...

    extjs_ux_LockingGridPanel-update6

    2. 创建一个新的ExtJS GridPanel实例,设置其配置项,如数据源、列定义、锁定策略等。 3. 在列配置中,指定需要锁定的列,这通常通过设置`locked: true`属性来实现。 4. 初始化GridPanel并将其添加到页面上。 5. ...

    gridPanel添加按钮

    例如,在ExtJS中,我们可以创建一个新的`Ext.toolbar.Toolbar`实例,并将其附加到`gridPanel`的顶部或底部。 ```javascript var toolbar = Ext.create('Ext.toolbar.Toolbar', { dock: 'top', // 或者 'bottom' ...

    ExtJs java实例 (个人/家庭收支管理系统)第2版加强版

    在本实例中,我们可能会看到使用了诸如GridPanel(表格面板)来展示收支明细,FormPanel(表单面板)用于输入新的收支信息,以及可能用到Chart(图表)来可视化统计结果。 其次,系统中涉及的Java部分可能涉及到...

Global site tag (gtag.js) - Google Analytics