是否有更好的方法将多值数据显示为列
Is there a better way to display multivalue data as a column?
我的笔记数据库中有4个审计字段。它们是多值的,当表单上的内容发生变化时,它们每个都得到一个新条目。我有一个审计表单,它以列的方式显示这些字段。就像风景一样。下面是这些列的代码。
<xp:tr>
<xp:td style="background-color:rgb(255,255,255)">
<xp:text escape="true" id="dspAuditWhen"></xp:text></xp:td>
<xp:td style="background-color:rgb(255,255,255)">
<xp:text escape="true" id="dspAuditWho"></xp:text></xp:td>
<xp:td style="background-color:rgb(255,255,255)">
<xp:text escape="true" id="dspAuditWhat"></xp:text></xp:td>
<xp:td style="background-color:rgb(255,255,255)">
<xp:text escape="true" id="dspAuditValue"></xp:text></xp:td>
</xp:tr>
我用客户端"onClientLoad"事件填充这些字段。
var auditWhen = XSP.getElementById("#{id:AuditWhen}").value.split(";");
XSP.getElementById("#{id:dspAuditWhen}").innerHTML = auditWhen.join("'n");
var auditWho = XSP.getElementById("#{id:AuditWho}").value.split(";");
for ( i = 0; i < auditWho.length ; i++) {auditWho[i] = auditWho[i].substr(0,20); }
var a=auditWho.join("'n");
XSP.getElementById("#{id:dspAuditWho}").innerHTML = auditWho.join("'n");
var auditWhat = XSP.getElementById("#{id:AuditWhat}").value.split(";");
var b=auditWhat.join("'n");
XSP.getElementById("#{id:dspAuditWhat}").innerHTML = auditWhat.join("'n");
注意几件事。我还没有dspAuditValue的代码。我还控制了auditWho的长度。还要注意,我有一个变量"a",和"b"用于调试。
无论如何,这段代码对于dspAuditWhen和dspAuditWho列工作得非常好。对于dspAuditWhat,它们似乎只是由空格分隔,而不是换行符。
我比较了"auditWhat"answers"auditWho"。"auditWhat"成功拆分为一个数组,就像"auditWho"一样
我比较了"b"answers"a"。它也是一个大字符串,每个元素之间用'n分隔。
我已经验证了auditWhat是notes客户机中的多值列表字段。(如果不是,那么我的Notes客户机审计表单将无法工作。)
我完全看不出这段代码有什么问题。这就好像网页浏览器在说"你得到了2列你想要的数据,就是这样!!"
在两个IE &Firefox
'n不是HTML标记-它就像HTML源代码中的回车符。
尝试加入
例如:
XSP.getElementById("#{id:dspAuditWhat}").innerHTML = auditWhat.join("<br/>");
所有值都在表的同一行中。每个值可以生成一行。这可以在服务器端这样做:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoDocument var="document1" formName="TestHistory"
action="openDocument" />
</xp:this.data>
<xp:this.resources>
<xp:styleSheet href="/histo.css" />
</xp:this.resources>
<xp:repeat id="repeat1" rows="30"
var="rowData" indexVar="rowIndex"
value="#{document1.HistoDate}">
<xp:this.facets>
<xp:text disableTheme="true" xp:key="header"
escape="false">
<xp:this.value><![CDATA[
<table class="histo">
<tr>
<th>When</th>
<th>Who</th>
<th>What</th>
<th>Comment</th>
</tr>
]]></xp:this.value>
</xp:text>
<xp:text disableTheme="true" xp:key="footer"
escape="false">
<xp:this.value><![CDATA[</table>]]></xp:this.value>
</xp:text>
</xp:this.facets>
<xp:panel tagName="tr" styleClass="#{javascript: (rowIndex%2 ? 'odd' : 'even')}">
<xp:text escape="true" tagName="td"
value="#{javascript:document1.getItemValueArray('HistoDate')[rowIndex]}" />
<xp:text escape="true" tagName="td"
value="#{javascript:document1.getItemValueArray('HistoActor')[rowIndex]}" />
<xp:text escape="true" tagName="td"
value="#{javascript:document1.getItemValueArray('HistoAction')[rowIndex]}" />
<xp:text escape="true" tagName="td"
value="#{javascript:document1.getItemValueArray('HistoComment')[rowIndex]}" />
</xp:panel>
</xp:repeat>
</xp:view>
还有一些像这样的css:
table.histo {
margin: 10px;
border: 1px solid #E0E0E0;
border-collapse: collapse;
}
table.histo th, table.histo td {
border: 1px solid #E0E0E0;
padding: 2px 4px;
}
table.histo th {
font-weight: bold;
text-align: center;
background-color: #D0D0D0;
}
table.histo tr.even {
background: #FFF;
}
table.histo tr.odd {
background: #F0F0F0;
}
相关文章:
- 如何将json数据显示为html
- 解耦按钮(两个按钮同时切换),并根据数据显示相应的按钮
- 将json提要数据显示为html
- 使用Ajax Get方法将数据显示到特定元素中
- 如何将数据显示为线性highChart
- Json显示来自网站的数据显示仅未定义
- 使 ajax 请求和成功数据显示在 id <选择>选择>部分中
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 如何在循环中将 json 数据显示为 HTML
- 如何使用javascript在html中将firebase数据显示为列表
- PHP同时循环数组数据显示到javascript中
- 原始图像数据显示
- 如何在 y 轴上将数据显示为 KB、MB、GB、TB
- Ajax 数据显示在包含 10 行的表中
- 如何让 Mathjax.js 与 ANCII.js 将附加的 json 数据显示为正确的公式
- 调用 Worklight 适配器并将列表视图中的 JSON 数据显示为字符串
- Jquery/Javascript Datatables : 如何在行选择时将行数据显示到 html 文本字段中
- 双击 td 时,如何在警告框中将数据库中的数据显示为 html 表
- 日期之间的数据显示所有头
- 如何使用模板中的数据显示谷歌地图