datatable动态添加列应当如何来实现

ceaf107
2013-10-13 · TA获得超过5648个赞
知道大有可为答主
回答量:1100
采纳率:0%
帮助的人:2117万
展开全部
首先了解一下JSF中DataTable的渲染方式:DataTable --<Header> UIComponent --<Children>List<HtmlColumn> ----<HtmlColumn> ------<Header>UIComponent ----<Children>List<UIComponent>因此,要在后台变更DataTable的状态,可以用dt.setHeader(UIComponent)设置DataTable的表头,然后可以往dt.getChildren()中添加HtmlColumn类型的列,同样,列中也可以由Header和Children组成。 代码实现如下:private void initialReportTable(List<ExcelReport> reportList) { dt.getChildren().clear(); for (ExcelReport report : reportList) { HtmlColumn column = new HtmlColumn(); HtmlOutputText header = new HtmlOutputText(); header.setValueExpression("value", getValueExpression("#{rmaReport.captions.c" + report.getPosition() + "}")); column.setHeader(header); HtmlOutputText value = new HtmlOutputText(); String ve = getVEString(report); System.out.println(report.getCaption() + " : " + ve); value.setValueExpression("value", getValueExpression(ve)); column.getChildren().add(value); dt.getChildren().add(column); } }其中,动态建立控件的方法为直接创建一个控件,然后通过ValueExpression来设置控件在运行时显示的值,如果是Column中的数据,则可以使用#{tableVar.ColumnName}格式的EL表达式。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式