当前位置:编程学习 > C#/ASP.NET >>

急死了.... DataTable中的数据(列/行)排序后放入一个新的DataTable

DataTable中的数据(列/行)排序后放入一个新的DataTable

自定义排序 就是将DataTable的数据以列为基准 进行移动

我需要完成的功能就是定义一个新的datatable然后把列的位置颠倒,最后用Excel导出 (求详细代码高分悬赏)

这个图片是下断点看到的数据真实数据;



   protected void ButtonHTTP_Click(object sender, EventArgs e)
        {
            string myName1Value;
            myName1Value = Request.Cookies["TWDatamyCookie"].Value;//Cookies存储查询所需条件

            CTWebPlatform.localhost.CTWebInterface mWebInt = new CTWebInterface();//引入接口
            DataTable BindData = null;
            BindData = mWebInt.TWDataSelectByOrgId(Convert.ToInt32(myName1Value));//接口实现查询操作
       


            checks(BindData); //复选框条件 删除datatable中不需要的数据-并汉化列头
            GridView view = new GridView();
            view.DataSource = BindData.DefaultView;
            view.DataBind();
            ExportToExcel(view);//导出数据Excel
        }



数据如下

TakeWellName DYNID OrgName Column1 SampleTime dStroke Column2 Column3 RecvTime dRunStatus dFreq date MeasureStationName
X6-12-P929 3212030 三矿(聚杏北七队) 启动 2012-6-18 15:02 5 3 游动凡尔漏失(轻度);气体影响(轻度); 2012-6-18 15:02 1 3 2012/6/18 15;02;55 计量间5
X6-22-P922 3212104 三矿(聚杏北七队) 启动 2012-6-18 15:02 5 2.72 游动凡尔漏失(轻度); 2012-6-18 15:02 1 2.72 2012/6/18 15;02;55 计量间3
X6-10-P928 3212106 三矿(聚杏北七队) 启动 2012-6-18 15:02 5 2.98 游动凡尔漏失(轻度); 2012-6-18 15:02 1 2.98 2012/6/18 15;02;29 计量间2
X6-30-P924 3212128 三矿(聚杏北七队) 启动 2012-6-18 15:02 6 2.92 正常 2012-6-18 15:02 1 2.92 2012/6/18 15;02;25 计量间3



求各位大神 帮忙解决 急死了都 --------------------编程问答-------------------- 从后往前遍历第一个datatable的列,添加到第二个,这不就反过来了吗,然后绑定数据,这样? --------------------编程问答-------------------- 从后往前遍历第一个datatable的列,添加到第二个,这不就反过来了吗,然后绑定数据,这样? --------------------编程问答-------------------- 建议这儿改成数据源为List集合 排序的话就不用多说了  List.OrderByDescending --------------------编程问答-------------------- 再急,也要先把问题描述清楚了 --------------------编程问答-------------------- 楼上几位我现在把问题说清楚,datatable相关操作我并不熟悉也是原来项目是这么写的...但是现在有要求必须按照指定的格式排列
未排序导出的数据格式


排序后需要得到的效果


完整项目代码

        protected void ButtonHTTP_Click(object sender, EventArgs e)
        {
            string myName1Value;
            myName1Value = Request.Cookies["TWDatamyCookie"].Value;//Cookies存储查询所需条件

            CTWebPlatform.localhost.CTWebInterface mWebInt = new CTWebInterface();//引入接口
            DataTable BindData = null;
            BindData = mWebInt.TWDataSelectByOrgId(Convert.ToInt32(myName1Value));//接口实现查询操作
       


           // checks(BindData); //复选框条件 删除datatable中不需要的数据-并汉化列头
            GridView view = new GridView();
            view.DataSource = BindData.DefaultView;
            view.DataBind();
            ExportToExcel(view);//导出数据Excel
        }
        /// <summary>
        /// 列数据导出选项□√
        /// </summary>
        /// <param name="BindData"></param>
        private void checks(DataTable BindData)
        {
            if (CheckTakeWellName.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["TakeWellName"]);//游梁泵名称
            }
            else {
                BindData.Columns["TakeWellName"].ColumnName = "游梁泵名称";
            }

            if (CheckDYNID.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["DYNID"]);//示功编号
            }
            else
            {
                BindData.Columns["DYNID"].ColumnName = "示功编号";
            }
            if (CheckOrgName.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["OrgName"]);   //所属井场
            }
            else
            {
                BindData.Columns["OrgName"].ColumnName = "所属井场";
            }
            if (CheckColumn1.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["Column1"]);  //启停机
            }
            else
            {
                BindData.Columns["Column1"].ColumnName = "启停机";
            }
            if (CheckSampleTime.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["SampleTime"]);//采集时间
            }
            else
            {
                BindData.Columns["SampleTime"].ColumnName = "采集时间";
            }
            if (CheckdStroke.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["dStroke"]);//冲程(m)
            }
            else
            {
                BindData.Columns["dStroke"].ColumnName = "冲程(m)";
            }
            if (CheckColumn2.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["Column2"]);//冲次(/min)
            }
            else
            {
                BindData.Columns["Column2"].ColumnName = "冲次(/min)";
            }
            if (CheckColumn3.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["Column3"]);//运行状态
            }
            else
            {
                BindData.Columns["Column3"].ColumnName = "运行状态";
            }
            if (CheckRecvTime.Checked == false)
            {
                BindData.Columns.Remove(BindData.Columns["RecvTime"]);//接收时间
            }
            else
            {
                BindData.Columns["RecvTime"].ColumnName = "接收时间";
            }
            BindData.Columns.Remove(BindData.Columns["dRunStatus"]);//判断条件
            BindData.Columns.Remove(BindData.Columns["dFreq"]);     //判断条件
            BindData.Columns.Remove(BindData.Columns["date"]);      //判断条件
           

        }

        public void ExportToExcel(GridView dd)
        {
            string Exports = null;
            string Contents = null;
            if (RadioWord.Checked == true)
            {
                Exports = "GridviewWord.doc";
                Contents = "application/ms-word";
            }
            if (RadioExcel.Checked == true)
            {
                Exports = "GridviewExcel.xls";
                Contents = "application/ms-excel";
            }
            if (RadioTXT.Checked == true)
            {
                Exports = "GridviewWord.html";
                Contents = "application/ms-html";
            }
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyy-MM-dd") + Exports);
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
            //Response.ContentType = "application/ms-excel";
            Response.ContentType = Contents;
            Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");
            System.IO.StringWriter tw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
            dd.RenderControl(hw);
            Response.Write(tw.ToString());
            Response.End();
        }
        /// <summary>
        /// 处理 runat="server" //注释掉下面的代码,否则在asp.net2.0下会报错(GridView是asp.net 2.0下的控件,1.1下一些控件也可以导出Excel或word)
        /// </summary>
        /// <param name="control"></param>
        public override void VerifyRenderingInServerForm(Control control)
        {
            //base.VerifyRenderingInServerForm(control);
        }



麻烦提供代码,提供思路我也不会操作...刚刚涉及这方面 --------------------编程问答-------------------- 急啊 .................. --------------------编程问答-------------------- 顶起来求解答,怎么弄 --------------------编程问答-------------------- 移动列的顺序
DataTable.Columns["OrgName"].SetOrdinal[0]; --------------------编程问答-------------------- dt.DefaultView.ToTable(true, "列名3,列名4,列名5");得到一个新DataTable。

是这个意思吗?
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,