多个不同的表合并到一个datatable中,repeater在绑定datatable
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace LZserverList
{
public partial class LZList : System.Web.UI.Page
{
SqlConnection conn = new SqlConnection("server=.;database=ShifanRoadLZ0818;uid=sa;pwd=123456;");
//处罚表查询
string sqlcf = @"select DJB_CF.CaseDistrict, DJB_CF.CaseYear,DJB_CF.CaseMonth, DJB_CF.CaseMoney,DJB_CF.TreeType from DJB_CF";
//赔补偿表查询
string sqlpbc = @"select DJB_PBC.CaseDistrict,DJB_PBC.CaseYear,DJB_PBC.CaseMonth, DJB_PBC.CaseMoney,DJB_PBC.TreeType from DJB_PBC";
//强制表查询
string sqlqz = @"select DJB_QZ.CaseDistrict,DJB_QZ.CaseYear,DJB_QZ.CaseMonth, DJB_QZ.CaseMoney,DJB_QZ.TreeType from DJB_QZ";
//许可表查询
string sqlxk = @"select DJB_XK.CaseDistrict as cd,DJB_XK.CaseYear as cy,DJB_XK.CaseMonth as cm, DJB_XK.CaseMoney as cmy,DJB_XK.XKType as ct from DJB_XK";
protected void Page_Load(object sender, EventArgs e)
{
Bind();
}
//绑定repeater
public void Bind()
{
//string Month = "";
//string Year = "";
retdf.DataSource = DataTablelist();
retdf.DataBind();
}
//处罚表
public DataTable tablecf()
{
SqlDataAdapter sda = new SqlDataAdapter(sqlcf, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dt.Dispose();
return dt;
}
//赔补偿表
public DataTable tablepbc()
{
SqlDataAdapter sda = new SqlDataAdapter(sqlpbc, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dt.Dispose();
return dt;
}
//强制表
public DataTable tableqz()
{
SqlDataAdapter sda = new SqlDataAdapter(sqlqz, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dt.Dispose();
return dt;
}
//许可表
public DataTable tablexk()
{
SqlDataAdapter sda = new SqlDataAdapter(sqlxk, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dt.Dispose();
return dt;
}
//三个相同的表集合在一个表中
public DataTable table3list()
{
DataTable cf = (DataTable)tablecf();
DataTable newDataTable = cf.Clone();
object[] obj = new object[newDataTable.Columns.Count];
//添加处罚表的数据
for (int i = 0; i < cf.Rows.Count; i++)
{
cf.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
//添加赔补偿表的数据
DataTable pbc = (DataTable)tablepbc();
for (int i = 0; i < pbc.Rows.Count; i++)
{
pbc.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
//添加强制表的数据
DataTable qz = (DataTable)tableqz();
for (int i = 0; i < qz.Rows.Count; i++)
{
qz.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
return newDataTable;
}
/// <summary>
/// 将两个列不同(结构不同)的DataTable合并成一个新的DataTable
/// </summary>
/// <param name="DataTable1">表1</param>
/// <param name="DataTable2">表2</param>
/// <param name="DTName">合并后新的表名</param>
/// <returns>合并后的新表</returns>
public DataTable DataTablelist()
{
string DTName = "";
DataTable list3 = (DataTable)table3list();
DataTable xk = (DataTable)tablexk();
//克隆DataTable1的结构
DataTable newDataTable = list3.Clone();
for (int i = 0; i < xk.Columns.Count; i++)
{
//再向新表中加入DataTable2的列结构
newDataTable.Columns.Add(xk.Columns[i].ColumnName);
}
object[] obj = new object[newDataTable.Columns.Count];
//添加DataTable1的数据
for (int i = 0; i < list3.Rows.Count; i++)
{
list3.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
if (list3.Rows.Count >= xk.Rows.Count)
{
for (int i = 0; i < xk.Rows.Count; i++)
{
for (int j = 0; j < xk.Columns.Count; j++)
{
newDataTable.Rows[i][j + list3.Columns.Count] = xk.Rows[i][j].ToString();
}
}
}
else
{
DataRow dr3;
//向新表中添加多出的几行
for (int i = 0; i < xk.Rows.Count - list3.Rows.Count; i++)
{
dr3 = newDataTable.NewRow();
newDataTable.Rows.Add(dr3);
}
for (int i = 0; i < xk.Rows.Count; i++)
{
for (int j = 0; j < xk.Columns.Count; j++)
{
newDataTable.Rows[i][j + list3.Columns.Count] = xk.Rows[i][j].ToString();
}
}
}
newDataTable.TableName = DTName; //设置DT的名字
return newDataTable;
}
}
}
多个不同的表合并到一个datatable中,repeater在绑定datatable的更多相关文章
- [SQL]复制数据库某一个表到另一个数据库中
SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好了 例子:SELECT * I ...
- 将多个sass文件合并到一个文件中
将多个sass文件合并到一个文件中 应用场景:制作angular npm包的时候,定义的一些全局样式,自定义主题色这类的情况下,多个scss文件会要合并成一个文件并写到dist文件里,发布到仓库中. ...
- MapReduce案例:统计共同好友+订单表多表合并+求每个订单中最贵的商品
案例三: 统计共同好友 任务需求: 如下的文本, A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E ...
- 通过java 来实现对多个文件的内容合并到一个文件中
现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...
- 如何快速将多个excel表格的所有sheet合并到一个sheet中
1.将需要合并的excel文件放在同一个文件夹下: 2.新建一个excel表格并打开,右键sheet1,查看代码,然后复制下方的代码到代码框里,点击菜单栏中的“运行”–“运行子过程/用户窗体”,等待程 ...
- C#拷贝一个库的表到另外一个库中(的四种方式)
1.该方法 基本不能用于实际开发中 ,仅供学习参考 public string Copy() { //要复制的表名 string table = "AAAAA"; //构造连接字符 ...
- 如何将两个PDF文件合并到一个页面中
在目前职场办公中,很多使用的文件格式是PDF文件格式,由于工作的需要,经常需要将PDF文件合并在一起,但由于PDF文件不能直接编辑修改,不能OFFICE,WPS那样,通过复制粘贴将两者合并,那如何解决 ...
- Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格
Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...
- php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
http://blog.csdn.net/xyzchenxiaolin/article/details/51700485 源数据: $infos = array( array( 'a' => 3 ...
随机推荐
- Android 学习笔记(一)
环境配置在网上搜索的一大堆. 这里简单发几个连接. http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html http://jing ...
- JDBC_mysql---防sql注入,存储图片
package PreparedStatement_sql注入; import java.io.File; import java.io.FileInputStream; import java.io ...
- Spring 入门 Ioc-Annotation
通过对XML版本进行修改:http://www.cnblogs.com/likailan/p/3446821.html 一.导入 Spring 所需要的包 spring-framework-2.5.6 ...
- C语言中宏定义(#define)时do{}while(0)的价值(转)
C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...
- CSS 垂直居中5种方法
利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器 ...
- T - 阿牛的EOF牛肉串(第二季水)
Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深厚的 ...
- commands - `tar`
remove files after pack: tar --remove-files -cf all.tar * compression: -j: bzip2 -z: gzip add file t ...
- 初始seajs
SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制 SeaJS本身遵循KISS(Keep It Simple, Stupid ...
- Python第一印象,大法好!
为了用flask开发web应用,这两天就开始看了一点点Python.还没看到用Python写网站后台的那部分,就被其强大的数据处理能力和语法的灵活性吸引.肯定是我少见多怪,不过看到人家灵活使用Pyth ...
- I/O事件
I/O事件 最近在研究tornado和gevent,里面涉及了非阻塞I/O.在了解非阻塞I/O之前,需要先了解I/O事件 我们知道,内核有缓冲区.假设有两个进程A,B,进程B想读进程A写入的东西(即进 ...