DataTable中的数据(列/行)排序

赵昌宇 2012-06-27 03:47:58
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);
}






请高手帮忙 敲出代码 带上注释 谢谢!
...全文
279 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dalmeeme 2012-06-27
  • 打赏
  • 举报
回复
DataTable r=dt.DefaultView.ToTable(true, "列名3,列名4,列名5");
二当家 2012-06-27
  • 打赏
  • 举报
回复
没看懂你的具体需求
但是我想 既然排序是在DATATABLE里完成的 那你直接写个导出DATATBALE就好了啊

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧