当前位置: 首页 > news >正文

DataTable行列转换

 

DataTable行列转换的函数,找遍了网上都没找到,还是自己写了,这个函数在ContrastTable函数将被调用,ContrastTable用于实现在视图中对比数据,类似于pcoline的产品比较功能。是DataTable版的,DataSet版的就不贴了。
 
public  DataTable cgDataTable(DataTable oldTable)
  {
   try
   {
    int h=oldTable.Rows.Count+1;
    int l=oldTable.Columns.Count;   
    DataTable newTable = new DataTable();
    for(int i=0; i<h; i++)
    {
     if (i==0)
     {
      newTable.Columns.Add(oldTable.Columns[0].ToString());
     }
     else
     {
      newTable.Columns.Add(oldTable.Rows[i-1][0].ToString ());
     }
    }        
    
    for(int i=0;i<l;i++)
    {    
     DataRow r;
     r=newTable.NewRow();        
     //oldTable.Columns.Count;
     for(int j=0;j<h;j++)   
     {      
      if (j==0)
      {
       r[j] = oldTable.Columns[i].ToString();        
      }
      else
      {
       r[j] = oldTable.Rows[j-1][i].ToString();        
      }
     }
     if (i==0)
     {
     //
     }
     else
     {
      newTable.Rows.Add(r);
     }
    }
    
     
    return newTable;
   }  
   catch(Exception ex)
   {
    throw new Exception(ex.ToString());
   }
  
  }
 
------------------------
public DataTable ContrastTable(string conn,string TableName,string KeyColumn,IList Columns,IList RowID,string OrderBy,bool direction)
  {
  
   SqlConnection con = new SqlConnection(conn);     
   string strColumns = "";  
   for   (int   i=0;i<Columns.Count;i++)
   {  
    if (i==Columns.Count-1)
    {
     strColumns+=Columns[i];  
    }
    else
    {
     strColumns+=Columns[i]+",";  
    }
   }  
   string strRowID = "";  
   /*for (int j=0;j<RowID.Count;j++)
   {  
    if (j==Columns.Count-1)
    {
     strRowID+=RowID[j];  
    }
    else
    {
     strRowID+=RowID[j]+",";  
    }
   } */
   foreach (object o in RowID)
   {
    strRowID+= ""+KeyColumn+" = '"+o.ToString()+"' or ";  
   }
   
   strRowID=strRowID.Substring(0,strRowID.Length-3);
   string sql="";
   sql="select "+strColumns+" from "+TableName+" where "+strRowID+" order by "+OrderBy+"";
   //Trace.Write("sql",sql);
      

   try
   {
    SqlDataAdapter da = new SqlDataAdapter(sql, con);
    DataSet ds = new DataSet();
    con.Open();
    da.Fill(ds);
    if (direction==true)
    {
     return ds.Tables[0];
    }
    else
    {
     return cgDataTable(ds.Tables[0]);
     
    }
       
   }
   catch(SqlException se)
   {
    throw new Exception(se.ToString());
   }
   finally
   {
    con.Close();
    con.Dispose();
   }
  }
 
-----------
调用方法(这里的代码效率有些问题):

   ArrayList a=new ArrayList();
   foreach(ListItem li in CheckBoxList1.Items)
   {
    if(li.Selected)
    {
     a.Add(li.Value);
    }
   }
   ArrayList b=new ArrayList();
   foreach(ListItem li in CheckBoxList2.Items)
   {
    if(li.Selected)
    {
     b.Add(li.Value);
    }
   }
   

   DataGrid1.DataSource = ContrastTable(ConfigurationSettings.AppSettings["LocationOfCode"],TextBox1.Text,"PersonID",a,b,"PersonID",true).DefaultView;
   DataGrid1.DataBind();

 

相关文章:

  • html的a标签display:block之后文字竖直居中
  • 买了一个USB无线网卡
  • 一分钟制作U盘版BT3 - 有图滴儿 bt3破解教程
  • 假装
  • html与html5的一些区别
  • 无盘教程
  • Entity Framework – Update Model From Database, Part 2
  • mac 关闭指定端口
  • 邮件系统,企业的沟通桥梁,不可以宕机
  • WinForm+ADO.net应用(一)
  • 自制简单的image图片服务器,404原理
  • 统计学图书列表
  • mongodbOperator
  • ASP.NET 进度条(附源代码)
  • mysql数据库参数文件性能调试工具:tuning-primer.sh
  • 时间复杂度分析经典问题——最大子序列和
  • 《剑指offer》分解让复杂问题更简单
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • DOM的那些事
  • Elasticsearch 参考指南(升级前重新索引)
  • extract-text-webpack-plugin用法
  • JavaScript实现分页效果
  • k8s如何管理Pod
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • log4j2输出到kafka
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • QQ浏览器x5内核的兼容性问题
  • SQLServer之创建数据库快照
  • SQLServer之创建显式事务
  • SwizzleMethod 黑魔法
  • underscore源码剖析之整体架构
  • 如何胜任知名企业的商业数据分析师?
  • 深度解析利用ES6进行Promise封装总结
  • 微服务入门【系列视频课程】
  • 学习HTTP相关知识笔记
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 智能合约开发环境搭建及Hello World合约
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)共用体union的用法举例
  • (C语言)字符分类函数
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (二)斐波那契Fabonacci函数
  • (论文阅读40-45)图像描述1
  • (转)EOS中账户、钱包和密钥的关系
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (轉)JSON.stringify 语法实例讲解
  • ***测试-HTTP方法
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .dwp和.webpart的区别
  • .NET 8.0 发布到 IIS
  • .NET Framework与.NET Framework SDK有什么不同?