如何在DataTable中添加表,列字段

如何在DataTable中添加表,列字段,第1张

dataTable本身就是一张表,你说的添加表的意思应该是创建dataTable对象

然后增加列:

DataTable dt=new DataTable()//创建对象

dt.Columns.Add("列1") //创建一列名为“列1”

您好,您这样:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

GridView1.DataSource = FormatDT()

GridView1.DataBind()

}

}

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)

{

switch (e.Row.RowType)

{

//页头

case DataControlRowType.Header:

//第一行表头

TableCellCollection tcHeader = e.Row.Cells

tcHeader.Clear()

tcHeader.Add(new TableHeaderCell())

tcHeader[0].Attributes.Add("bgcolor", "#8E8E8E")

tcHeader[0].Attributes.Add("rowspan", "0")//跨Row

tcHeader[0].Attributes.Add("colspan", "9")//跨Column

tcHeader[0].Text = "全部信息</tr><tr>"

//第二行表头

tcHeader.Add(new TableHeaderCell())

tcHeader[1].Attributes.Add("bgcolor", "#008A23")

tcHeader[1].Text = "身份z号码"

tcHeader.Add(new TableHeaderCell())

tcHeader[2].Text = "基本信息"

tcHeader[2].Attributes.Add("bgcolor", "#005EBB")

tcHeader[2].Attributes.Add("colspan", "3")

tcHeader.Add(new TableHeaderCell())

tcHeader[3].Text = "福利"

tcHeader[3].Attributes.Add("bgcolor", "#008A23")

tcHeader[3].Attributes.Add("colspan", "2")

tcHeader.Add(new TableHeaderCell())

tcHeader[4].Text = "应发合计"

tcHeader[4].Attributes.Add("bgcolor", "#008A23")

tcHeader.Add(new TableHeaderCell())

tcHeader[5].Text = "联系方式</tr><tr>"

tcHeader[5].Attributes.Add("bgcolor", "#005EBB")

tcHeader[5].Attributes.Add("colspan", "2")

//第三行表头

tcHeader.Add(new TableHeaderCell())

tcHeader[6].Text = "身份z号码"

tcHeader.Add(new TableHeaderCell())

tcHeader[7].Text = "姓名"

tcHeader.Add(new TableHeaderCell())

tcHeader[8].Text = "出生日期"

tcHeader.Add(new TableHeaderCell())

tcHeader[9].Text = "性别"

tcHeader.Add(new TableHeaderCell())

tcHeader[10].Text = "基本工资"

tcHeader.Add(new TableHeaderCell())

tcHeader[11].Text = "奖金"

tcHeader.Add(new TableHeaderCell())

tcHeader[12].Text = "应发合计"

tcHeader.Add(new TableHeaderCell())

tcHeader[13].Text = "家庭住址"

tcHeader.Add(new TableHeaderCell())

tcHeader[14].Text = "邮政编码"

break

//数据行 内容自适应 不换行

case DataControlRowType.DataRow:

TableCellCollection cells1 = e.Row.Cells

for (int i = 0i <cells1.Counti++)

{

cells1[i].Wrap = false//设置此项切记 不要设置前台GridView宽度

}

break

}

}

//创建DataTable

protected DataTable CreateDT()

{

DataTable tblDatas = new DataTable("Datas")

//序号列

//tblDatas.Columns.Add("ID", Type.GetType("System.Int32"))

//tblDatas.Columns[0].AutoIncrement = true

//tblDatas.Columns[0].AutoIncrementSeed = 1

//tblDatas.Columns[0].AutoIncrementStep = 1

//数据列

tblDatas.Columns.Add("身份z号码", Type.GetType("System.String"))

tblDatas.Columns.Add("姓名", Type.GetType("System.String"))

tblDatas.Columns.Add("出生日期", Type.GetType("System.String"))

tblDatas.Columns.Add("性别", Type.GetType("System.String"))

tblDatas.Columns.Add("基本工资", Type.GetType("System.Decimal"))

tblDatas.Columns.Add("奖金", Type.GetType("System.Decimal"))

//统计列开始

tblDatas.Columns.Add("应发合计", Type.GetType("System.String"), "基本工资+奖金")

//统计列结束

tblDatas.Columns.Add("家庭住址", Type.GetType("System.String"))

tblDatas.Columns.Add("邮政编码", Type.GetType("System.String"))

tblDatas.Rows.Add(new object[] { null, "张三", "1982", "0", 3000, 1000, null, "深圳市", "518000" })

tblDatas.Rows.Add(new object[] { null, "李四", "1983", "1", 3500, 1200, null, "深圳市", "518000" })

tblDatas.Rows.Add(new object[] { null, "王五", "1984", "1", 4000, 1300, null, "深圳市", "518000" })

tblDatas.Rows.Add(new object[] { null, "赵六", "1985", "0", 5000, 1400, null, "深圳市", "518000" })

tblDatas.Rows.Add(new object[] { null, "牛七", "1986", "1", 6000, 1500, null, "深圳市", "518000" })

return tblDatas

}

//转换DataTable中的数据 用于逻辑处理相应的数据 显示

protected DataTable FormatDT()

{

DataTable dt1 = CreateDT()

//容错处理 用于不确定 自动产生的列

if (dt1.Columns.Contains("性别"))

{

foreach (DataRow dr in dt1.Rows)

{

dr["性别"] = (dr["性别"].ToString() == "0") ? "女" : "男"

}

}

return dt1

}

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


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

原文地址:https://54852.com/bake/11628060.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存