首页新闻招聘找找看知识库
  • 回复:5 浏览:5002 2009-12-18 16:46 来自 Beggar

    有一个大类表,有一个小类表

    都用extjs 来做展示,增删改都没有问题

     

    我现在遇到一个设计上的问题。小类表有大类的外键。如果直接返回小类表序列化的json,那么在小类的这个grid就只能显示出来关联大类的ID。我现在想要显示大类的名称,就遇到困难了。

     想要显示出来名称就需要用这个小类里面的外键去大类表里面做查询。这个是理所应当的。但是用extjs 做的话就复杂了很多,这些都需要在后台全部做好。然后返回对应的数据。

    不知道大家在这方面有没有什么好办法。微软的DataContractJsonSerializer不知道能不能序列化datatable如果可以的话我还有一个办法就是写一个通用的去数据的方法。我把我需要的数据用sql 写好。让他返回datatable就可以了

    而现在我都是在用list做的。。。。

     

    extjs很漂亮。但是实际用起来代码量很大。也许是我不会封装吧。我一个人在一个企业里面做管理系统。也没什么人交流。希望大家帮帮我。

  • roseforyou
    2009-12-31 00:03 roseforyou
    你的问题挺有意思啊
    1.我现在用的是EJB3 在你说的小类可以查询得到大类的实体,
    可以考虑转型为EJB3,
    2.还有简单的做法可以在小类对应的表加一个大类的名称不就可以了吗!
    3.再有也可以在前台作,这个有点笨了,就是做一个store,存放所有的大类的ID和名称,在小类对应表格的大类ID的renderer函数修改一下返回值即可!
    不知道我说的你懂吗? 有问题可以去9iext.cn去问,毕竟专业一点!!!
    第1楼 回到顶楼
  • lily_yuan
    2010-03-18 16:48 lily_yuan
    没什么复杂的,就是通过这个小类表的外键(大类表的主键)查询出想要显示的名称,对应给小类表的那个外键,直接使用外键,就能显示出你有想要的名称
    第2楼 回到顶楼
  • 千里之行始于足下
    2010-03-21 22:42 千里之行始于足下
    Ext.onReady(function() {

    var proxy = new Ext.data.HttpProxy( {
    url : 'grid.do?operator=read'
    });
    // 定义reader
    var reader = new Ext.data.JsonReader( {
    id : 'loginName'
    }, [ {
    name : 'loginName'
    }, {
    name : 'password'
    }, {
    name : 'type', convert : function(v) {
    return v.typeName;
    }
    }])
    // 构建Store
    var store = new Ext.data.Store( {
    proxy : proxy,
    reader : reader
    });
    // 载入
    store.load();

    // create the grid
    var grid = new Ext.grid.GridPanel( {
    store : store,
    columns : [ {
    header : "Login Name",
    width : 110,
    dataIndex : 'loginName',
    sortable : true
    }, {
    header : "Password",
    width : 120,
    dataIndex : 'password',
    sortable : true
    }, {
    header : "Type",
    width : 120,
    dataIndex : 'type',
    sortable : true
    }],
    renderTo : 'example-grid',
    width : 540,
    height : 200
    });

    });
    看到Type了吗?它本是一个对象的(外键),我们有Convert 去手动处理它。
    但我们怎么样得到数据,用DataSet我想不行吧,因为得到得仅是一个表的信息吧。
    所以你用的list,就好啦,list里你放的是对象,这个对象里面的外键你写成对象,然后放在list中。我想我们序列化成json是,有是{name,type:{}}这种格式了吧,如果是,就OK啦!
    第3楼 回到顶楼
  • neverlost
    2010-03-25 15:02 neverlost
    哥们 ext 的grid的显示是与ilist无关的 关键看你生成的jsonstring的内容
    也就是说 当你通过ajax或者其他方式生成 json后根据内容显示
    第4楼 回到顶楼
  • 王登武
    2010-03-29 09:46 王登武
    store模型定义的时候多定义一个需要显示的外键对应的名称,然后后台关联查询把对应外键需要显示的值也放进去,json过去,然后对应grid里的列,使用render属性,根据ID转换一下就好了嘛。
    第5楼 回到顶楼
登录后才能评论,请先登录注册