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求各位大神 帮忙解决 急死了都

解决方案 »

  1.   

    从后往前遍历第一个datatable的列,添加到第二个,这不就反过来了吗,然后绑定数据,这样?
      

  2.   

    从后往前遍历第一个datatable的列,添加到第二个,这不就反过来了吗,然后绑定数据,这样?
      

  3.   

    建议这儿改成数据源为List集合 排序的话就不用多说了  List.OrderByDescending
      

  4.   

    楼上几位我现在把问题说清楚,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);
            }麻烦提供代码,提供思路我也不会操作...刚刚涉及这方面
      

  5.   

    移动列的顺序
    DataTable.Columns["OrgName"].SetOrdinal[0];
      

  6.   

    dt.DefaultView.ToTable(true, "列名3,列名4,列名5");得到一个新DataTable。是这个意思吗?