首先了解一下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表达式。你的datagridview是直接绑定的DataTable吧!如果是这样,那你只有在给DataTable赋值的时候先一部插入新的一列这样你插入的那一列就在最前面,后面从数据库获取的数据就自动
追加到了那一列后面只有这样,你把DataTable绑定到DataGridView的时候,这一列才能在最前面!大概的思路就是通过元素追加,即table
对象追加一个tr对象,tr对象追加3个td对象, td对象的值为你的input的输入值。
1
2
3
4
5
6
7
8
9
10
//初始化td对象及tr对象
var $td = $("<td/>"),$tr=$("<tr/>")
//分别为td对象赋值
$tr.append($td.clone().text( $("#a1").val() ))
.append($td.clone().text( $("#a2").val() +"-"+ $("#a2").val()))
.append($td.clone().text( $("#a4").val() ))
//table的id假设为tb,为table追加tr对象
$("#tb").append($tr)
评论列表(0条)