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

datatable动态添加列应当如何来实现,第1张

首先了解一下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表达式。

假定你的datatable名为tblDatas,有Product、Version、Description三个字段

DataRow newRow

newRow = tblDatas.NewRow()

newRow["Product"] = "水果刀"

newRow["Version"] = "2.0"

newRow["Description"] = "打架专用"

tblDatas.Rows.Add(newRow)

假定你的datatable名为tblDatas,有Product、Version、Description三个字段

DataRow newRow

newRow = tblDatas.NewRow()

newRow["Product"] = "水果刀"

newRow["Version"] = "2.0"

newRow["Description"] = "打架专用"

tblDatas.Rows.Add(newRow)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11177932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存