`
yiminghe
  • 浏览: 1471113 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Grid using dwr ajax

阅读更多

Grid 应该是任何一个标准库的重中之重,extjs 表格采用 mvc 结构,就先不细说了,而他的 bbar 分页,换页的方式并没有文档详细记载,当然是关于 ajax 的方式,经过试验  应该有两种方式,以采用 dwr 为例

1。直接 修改store 的 load 方法 :(看 simplestore 的 源码)

 

store.load = function (hoptions) {
    var params = hoptions.params;
    function showJobInside(arrayJobs) {
        Ext.MessageBox.hide();
        var html = "";
        if (arrayJobs == null || arrayJobs == undefined || arrayJobs.list == null || arrayJobs.list == undefined) {
            arrayJobs = {};
            arrayJobs.list = new Array();
            arrayJobs.total = 0;
        }
        var ddata = new Array();
        for (var i = 0; i < arrayJobs.list.length;
        i++) {
            var tob = arrayJobs.list[i];
            var tmpJobtitle = filterNull(getLabel(theJobCategories, filterNull(tob.jobTitle)));
            ddata.push([
            tob.employerId, filterNull(tob.employerName), tob.jobId, tmpJobtitle, tob.desiredCount, filterNull(tob.enterTime.toLocaleString()), filterNull(getLabel(theExperienceMap, filterNull(tob.requiredExperience))), tob.jobDesc]);
        }
        var o = store.reader.readRecords(ddata);
        o.totalRecords = arrayJobs.total;
        window.store.loadRecords(o, hoptions, true);
    }
    Ext.MessageBox.wait('数据加载中 ...', '招聘求职');
    JobSearcher.searchJobs($F('jobDay'), $F('jobAddress'), $F('jobCategory'), $F('jobType'), $F('industry'), getJobTitle(), getEmployName(), params['start'], params['limit'], {
        callback: showJobInside,
        timeout: TIMEOUT,
        errorHandler: function (message) {
            Ext.MessageBox.hide();
            alert("Error: " + message);
        }
    });
}


关键 :

 

 var o = store.reader.readRecords(ddata);
 o.totalRecords = arrayJobs.total;
 window.store.loadRecords(o, hoptions, true);


代码结构不好 。。。。

2. 采用   Ext.ux.data.DWRProxy.js

javascript :

 

 var py = window.store = new Ext.data.Store({
    reader: new Ext.data.JsonReader({
        id: 'employerIdStore',
        totalProperty: 'totalCount',
        root: 'rows',
        fields: [{
            name: 'employerId'
        },
        {
            name: 'employerName'
        },
        {
            name: 'jobId'
        },
        {
            name: 'jobTitle'
        },
        {
            name: 'desiredCount'
        },
        {
            name: 'enterTime'
        },
        {
            name: 'requiredExperience'
        },
        {
            name: 'jobDesc'
        },
        {
            name: 'agencyProvide'
        }]
    }),
    proxy: new Ext.ux.data.DWRProxy({
        dwrFunction: JobSearcher.loadSearchJob,
        // dwrFunction : Grid.loadData,
        listeners: {
            'beforeload': function (dataProxy, params) {
                var condition = {
                    'jobDay': $F('jobDay'),
                    'jobAddress': $F('jobAddress'),
                    'jobCategory': $F('jobCategory'),
                    'jobType': $F('jobType'),
                    'industry': $F('industry'),
                    'jobTitle': getJobTitle(),
                    'employName': getEmployName()
                };
                var p = Ext.apply({},
                condition, params);
                params[dataProxy.loadArgsKey] = [Ext.encode(p)];
                // alert(Ext.encode(p));
            },
            'loadexception': function (d, m) {
                Ext.Msg.alert('注意', '职位必须选择');
                return;
            }
        }
    })
});



java :

 public static HashMap loadSearchJob(String params) throws Exception {

        JSONObject jsonParams = JSONObject.fromObject(params);

        String issueDay = jsonParams.getString("jobDay");
        String jobTitle = jsonParams.getString("jobTitle");
        String employName = jsonParams.getString("employName");
        String workAddress = jsonParams.getString("jobAddress");
        String jobCategory = jsonParams.getString("jobCategory");
        if(jobCategory.equals("") ){
            throw new Exception("请选择职位。");
        }
        String jobType = jsonParams.getString("jobType");
        String industry = jsonParams.getString("industry");
        int fromNo = jsonParams.getInt("start");
        int maxCount = jsonParams.getInt("limit");
        MhrGetJobsRsp rsp = searchJobs(issueDay, workAddress,
                jobCategory, jobType, industry,
                jobTitle, employName,
                fromNo,
                maxCount);

        int total = 0;
        List<JSON> list = new ArrayList<JSON>();
        if (rsp.getList() != null) {
            for (int i = 0; i < rsp.getList().length; i++) {
                JSON json = JSONSerializer.toJSON(rsp.getList()[i]);
                list.add(json);
            }

            total = rsp.getTotal();
        } else {

        }
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("totalCount", total);
        map.put("rows", list);

        // String str = JSONSerializer.toJSON(map).toString();
        return map;
    }


我第一次看了 n 多源代码,因为不想介入ext的网络传输,结果搞出了第一种方法,痛苦啊,后来在网上看到了 proxy,才想起 ext store 是可以 设proxy的, 当时以为 proxy 很难写,不过看了牛人写的确实不简单,附件我上传了,大家看看。

 

分享到:
评论

相关推荐

    dwr实现ajax功能ajax+dwr

    通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous JavaScript and XML)的功能,即在后台与服务器交互数据并局部更新网页。 **Ajax**的核心是利用JavaScript进行异步数据请求,...

    dwr和ajax使用demo

    【DWR(Direct Web Remoting)与Ajax技术详解】 DWR(Direct Web Remoting)是一种在Web应用程序中实现异步JavaScript和XML(Ajax)的方法,它简化了客户端和服务器之间的通信,使得动态更新网页变得更加简单。DWR...

    dwr和ajax技术

    标题提及了“dwr和ajax技术”,这意味着我们要讨论的是两种用于创建动态Web应用程序的技术。DWR(Direct Web Remoting)是一种Java库,它允许JavaScript和Java在浏览器与服务器之间进行双向通信,而Ajax...

    DWR AJAX框架(包含使用教程)

    DWR利用AJAX(Asynchronous JavaScript and XML)技术,实现了浏览器与服务器之间的无刷新通信,使得用户界面更加动态和响应迅速。 1. **DWR框架基础** DWR的核心概念是反向Ajax,它创建了一种机制,使得...

    dwr ajax 局部刷新

    "dwr ajax 局部刷新"指的是使用DWR框架来更新网页的特定部分,而不是重新加载整个页面,提高用户体验。 **DWR基本概念:** 1. **CMT (Controlled Method Table)**:DWR的核心组件,负责管理服务器端的Java方法和...

    dwr.rar_dwr_dwr ajax_dwr 实现 联动 标签

    在“dwr.rar_dwr_dwr ajax_dwr 实现 联动 标签”这个项目中,我们将探讨如何利用DWR和AJAX技术来创建一个动态的、具有联动效果的标签系统。 1. **DWR基础**: DWR的核心组件包括一个服务器端的Servlet(DWR Engine...

    dwr ajax完整示例,内有dwr配置说明文档,sql脚本

    标题中的“dwr ajax完整示例”指的是Direct Web Remoting (DWR) 技术与AJAX(Asynchronous JavaScript and XML)的结合应用。DWR是一种开源Java库,它允许Web应用程序在浏览器和服务器之间安全地进行双向通信,使得...

    dwr ajax 下拉框自动搜索

    在这个特定的项目中,"dwr ajax 下拉框自动搜索"是指利用DWR框架和AJAX技术来创建一个功能,用户在输入框中输入关键词时,下拉框会自动填充匹配的建议,类似百度搜索的体验。当用户选择某个选项或点击搜索按钮,系统...

    jsp j2ee dwr ajax dwr登陆

    【标题】:“jsp j2ee dwr ajax dwr登陆”这一主题涉及的是在Web开发中使用Java Server Pages (JSP)、Java 2 Platform, Enterprise Edition (J2EE)、Direct Web Remoting (DWR)以及Asynchronous JavaScript and XML ...

    dwr的例子 反向AJAX 实现时时提醒

    Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行安全、高效的异步通信,即所谓的“反向AJAX”或“Comet”技术。DWR使得JavaScript能够调用服务器端的Java方法,就像它们是本地函数一样...

    dwr反转AJAX聊天源码

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现了Ajax(Asynchronous JavaScript and XML)技术的一种高效应用。在传统的Web应用中,用户发起请求,服务器...

    即时通讯DWR Reverse Ajax

    DWR(Direct Web Remoting)是实现这种功能的一种技术,尤其以其独特的Reverse Ajax特性在服务器推送(Server-Sent Events, SSE,也常被称为Comet技术)领域中备受关注。下面我们将深入探讨DWR Reverse Ajax的工作...

    dwr.rar_ajax d_dwr_dwr ajax_dwr struts2 example_struts2 ajax dwr

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许在Web应用程序中实现JavaScript与服务器端Java代码之间的直接通信。这个强大的工具使得开发者能够轻松地构建动态、富交互性的网页应用,而无需处理复杂的AJAX...

    DWR 实现ajax上传的小实例

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行异步通信,实现了类似Ajax的功能。在这个小实例中,我们将探讨如何使用DWR来实现实时的文件上传功能,这...

    DWR让Ajax如此简单

    **DWR:Direct Web Remoting,让Ajax变得简单** DWR(Direct Web Remoting)是一种JavaScript库,它允许Web应用程序实现服务器端与客户端之间的实时、双向通信,无需使用复杂的Ajax技术。DWR使得开发者能够像调用...

    my_employee_study.rar_Employee Stud_ajax_dwr_dwr ajax_上传 Java

    【标题】"my_employee_study.rar_Employee Stud_ajax_dwr_dwr ajax_上传 Java" 提供了一个关于员工学习的场景,特别关注的是AJAX、DWR技术以及Java在文件上传中的应用。这个压缩包包含了作者在公司近两个月内通过...

    dwr ajax完整示例,内有dwr配置说明文档,eclicps工程

    DWR简化了Ajax(Asynchronous JavaScript and XML)应用的开发,使得Web应用可以更加动态和交互。在本示例中,我们有一个关于DWR的完整案例,包括配置说明文档和一个Eclipse工程,这对于初学者或者想要深入理解DWR的...

    DWR Ajax简单入门例子

    DWR的核心概念是通过Ajax(Asynchronous JavaScript and XML)实现页面局部更新,提高用户体验。在这个"简单入门例子"中,我们将深入探讨DWR的基本用法和设置步骤。** 首先,我们需要理解DWR的工作原理。DWR通过在...

    DWR AJAX 简单示例

    **DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现Ajax(异步JavaScript和XML)应用。DWR简化了客户端与服务器端的交互,使得开发人员可以更加便捷地...

Global site tag (gtag.js) - Google Analytics