一、手动添加数据:
添加列和列名
添加行,对行内容添加值
手动打一段代码参考:
DataTable dt=new DataTable()
dt.columns.add("Column 1") //添加列1
dt.columns.add("Column 2") //添加列2
dt.rows.add() //添加一行空行
dt.rows[0][0]=1.1 //对第1行第1列赋值
dt.rows[0][1]=1.2 //对第1行第2列赋值
dt.rows[1][0]=2.1 //对第2行第1列赋值
dt.rows[1][1]=2.2 //对第2行第2列赋值
二、通过数据库查找结果赋值
网上示例有很多,手动打比较费时
你的datagridview是直接绑定的DataTable吧!如果是这样,那你只有在给DataTable赋值的时候先一部插入新的一列
这样你插入的那一列就在最前面,后面从数据库获取的数据就自动追加到了那一列后面
只有这样,你把DataTable绑定到DataGridView的时候,这一列才能在最前面!
首先了解一下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表达式。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)