如何给已经有数据的DataTable动态增加一列并赋值

如何给已经有数据的DataTable动态增加一列并赋值,第1张

你的datagridview是直接绑定的DataTable吧!如果是这样,那你只有在给DataTable赋值的时候先一部插入新的一列这样你插入的那一列就在最前面,后面从数据库获取的数据就自动追加到了那一列后面只有这样,你把DataTable绑定到DataGridView的时候,这一列才能在最前面!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>添加table列</title>

<script type="text/javascript" src="http://www.sz886.com/js/jquery-1.9.1.min.js"></script>

<script type="text/javascript">

$(document).ready(function(e) {

$("#btn_row").click(function(){

$("#table_add tr").eq(0).append("<td>第"+($("#table_add tr:eq(0) td").size()+1)+"列</td>")

})

})

</script>

</head>

<body>

<table id="table_add">

<tr>

<td>第1列</td>

<td >第2列</td>

</tr>

</table>

<input type="button" id="btn_row" value="添加列" />

</body>

</html>

首先了解一下JSF中DataTable的渲染方式:DataTable--<Header UIComponent

--<ChildrenList<HtmlColumn

----<HtmlColumn

------<HeaderUIComponent

----<ChildrenList<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)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存