如上图的datagrid,可以点击右边的修改变成如下图:
将原有的值显示出来了,不会是空值情况
具体解决的关键性代码:
<div id="datagrid1" class="mini-datagrid" allowResize="true" allowAlternating="true"
ondrawcell="onActionRenderer" idField="TABLEID" autoLoad="false" pager="#pager1" pageSize="20"
url="sjzcwhLoadData.json?logic-name=sjzcwh_load_data_logic">
<div property="columns">
<div field="TABLEID" name="TABLEID" visible="false" type="hidden" class="mini-hidden"></div>
<!--<div type="checkcolumn" allowSort="false" width="30"></div>-->
<div type="indexcolumn" width="40">序号</div>
<div field="XYBZ" name="XYBZ" displayField="XYBZ_MC" headeralign="center" align="center" width="70">选用状态
<input property="editor" class="mini-combobox" style="width:100%;" data="[{ id: 'Y', text: '选用' }, { id: 'N', text: '不选用'}]"/></div>
<div field="XTFL" name="XTFL" displayField="XTFL_MC" headeralign="center" align="center" width="130">系统分类
<input property="editor" class="mini-combobox" style="width:100%;" textField="XTFL_MC"
valueField="XTFL_DM" url="xtflData.json?logic-name=xtfl_data_logic"/></div>
<div field="YWLB" name="YWLB" displayField="YWLB_MC" headeralign="center" align="center" width="70">业务类别
<input property="editor" class="mini-combobox" style="width:100%;" textField="YWLB_MC"
valueField="YWLB_DM" url="ywlbData.json?logic-name=ywlb_data_logic"/></div>
<div field="YHM" name="YHM" headeralign="center" align="center" width="100">用户名</div>
<div field="BMC" name="BMC" headeralign="center" align="center" width="120">表名</div>
<div field="BZS" name="BZS" headeralign="center" align="left" width="120">表含义
<input property="editor" class="mini-textbox" style="width:100%;"/></div>
<div field="BSJL" name="BSJL" headeralign="center" allowsort="true" align="center" width="70">表数据量</div>
<div field="CJSJ" name="CJSJ" headeralign="center" allowsort="true" align="center" width="120">创建时间</div>
<div field="ZXXGSJ" name="ZXXGSJ" headeralign="center" allowsort="true" align="center" width="120">最新修改时间
</div>
<div field="ZXSXSJ" name="ZXSXSJ" headeralign="center" allowsort="true" align="center" width="120">最新刷新时间
</div>
<div field="SJJGGZ" name="SJJGGZ" headeralign="center" align="left" width="120">
数据加工规则<input property="editor" class="mini-textbox" style="width: 100%"/>
</div>
<div field="ACTION" name="ACTION" headeralign="center" align="center" width="80">操作</div>
</div>
</div>
可以看到,在可以编辑的单元格列的div中包含了一个input标签。
那怎么样将值带出来呢?很神奇的是,只需要在可编辑的那一列加上display属性即可。
但是这里很关键,display的属性值是多少呢?
这个就得关联到数据层了,在写SQL语句的时候,返回对应的字段值,将这个字段值设为display的属性值即可,如:
select t.table_id TABLEID,
decode(t.xybz, 'Y', '选用', 'N', '不选用') XYBZ_MC,
t.xybz XYBZ,
(select d.dm
from sjzcgl_dm d
where t.xtfl_dm = d.dm
and d.lb_dm = 'XTFL') XTFL,
(select d.mc
from sjzcgl_dm d
where t.xtfl_dm = d.dm
and d.lb_dm = 'XTFL') XTFL_MC,
(select d.dm
from sjzcgl_dm d
where t.ywlb_dm = d.dm
and d.lb_dm = 'YWLB') YWLB,
(select d.mc
from sjzcgl_dm d
where t.ywlb_dm = d.dm
and d.lb_dm = 'YWLB') YWLB_MC,
t.user_name YHM,
t.table_name BMC,
t.table_comment BZS,
t.table_count BSJL,
to_char(t.create_time, 'yyyy-mm-dd') CJSJ,
to_char(t.last_upd_time, 'yyyy-MM-dd') ZXXGSJ,
to_char(t.last_ref_time, 'yyyy-MM-dd') ZXSXSJ,
t.DATA_UPD_RULE SJJGGZ
from sjzcgl_zb t
其实出现这种问题的原因就是在于某一列是用代码为value的
如上,页面代码中的field=“XYBZ”和displayField=“XYBZ_MC”,是对应于SQL结果集中的“XYBZ”和“XYBZ_MC”;
同理field=“XTFL”和displayField=“XTFL_MC”,是对应于SQL结果集中的“XTFL”和“XTFL_MC”;
以上得出结论:displayField属性值设为代码对应名称的字段列名,field属性值设为代码字段列名。