|
|
Q:如何生成动态表格及数据的保存和展示?
A: 1、在表单定义计算脚本用于表格的生成和数据的解析,脚本如下:- var dynamic_table = (function(){
- var dynamic_table = {};
- dynamic_table['create'] = function () {
- var row_sql = "select * from tlk_row_form";
- var rows = queryBySQL(row_sql);
- var col_sql = "select * from tlk_column_form";
- var cols = queryBySQL(col_sql);
- var html = "";
- html += "<table class='dynamic_table'>";
- html += " <thead>";
- html += " <tr><th> </td>";
- for(var col_iter = cols.iterator(); col_iter.hasNext();) {
- html += "<th>" + col_iter.next().getItemValueAsString("column_name") + "</th>";
- }
- html += " </tr>";
- html += " </thead>";
- html += " <tbody>";
-
- for(var row_iter = rows.iterator(); row_iter.hasNext();) {
- html += " <tr>";
- var row_name = row_iter.next().getItemValueAsString("row_name");
- html += " <td>" + row_name + "</td>";
- for(var col_iter = cols.iterator(); col_iter.hasNext();) {
- var col_name = col_iter.next().getItemValueAsString("column_name");
- html += "<td><input name='" + row_name + "_" + col_name + "'/></td>";
- }
- html += " </tr>";
- }
- html += " </tbody></table>";
- html += "<script>(function(){ " +
- " var json_data = jQuery.parseJSON(jQuery('input[_name=json_data]').val()); "+
-
- " jQuery('.dynamic_table').find('input').each(function(){ " +
- " jQuery(this).val(json_data[jQuery(this).attr('name')]); " +
- " }); " +
- "})();</script>";
- return html;
- };
-
-
- return dynamic_table;
- })();
- dynamic_table.create();
复制代码 2、定义隐藏字段,用于保存动态表格中文本框的数据信息,例子的隐藏字段名为json_data;
3、在表单的保存按钮的动作执行前加上脚本,用于构建动态文本框的json数据保存到隐藏字段中,脚本如下:- var params = getParamsTable();
- var parameters = params.getParams();
- var json_data = "{";
- for(var iterator = parameters.entrySet().iterator(); iterator.hasNext();) {
- var nt = iterator.next();
- var name = nt.getKey().toString();
- var val = nt.getValue().toString();
- if(name.startsWith("row")) {//用于判断动态生成的文本框
- if(val == null) {
- val = "";
- }
- json_data += """ + name + "":"" + val + "",";
- }
- }
- var lastIndex = json_data.lastIndexOf(",");
- if (lastIndex > -1) {
- json_data = json_data.substring(0, lastIndex) + json_data.substring(lastIndex + 1, json_data.length);
- }
- json_data += "}";
- params.setParameter("json_data", json_data);
- getCurrentDocument().findItem("json_data").setValue(json_data);
- true;
复制代码 注意事项:动态文本框名字要有规律,例子中的名字均是以row开头 |
|