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

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
        }
        /// <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里完成的   那你直接写个导出DATATBALE就好了啊
--------------------编程问答-------------------- DataTable r=dt.DefaultView.ToTable(true, "列名3,列名4,列名5");
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,