现在已经获取到了表的数据list,要输出如这样的表格
这个问题考虑了很久,这个应该还涉及到单元格合并,奈何水平有限,求大神给个思路
4 个解决方案
#1
1.手动拼table.
计算出这个table几行、几列.
一个id占几行
如 图二的话,算出 4 行 3列
第一列 根节点占4行
第二列 1、2各占2行
第三列 各占一行
循环列 里面 再循环行
2.把整个表格打到页面,然后加载完成以后合拼相同列.
计算出这个table几行、几列.
一个id占几行
如 图二的话,算出 4 行 3列
第一列 根节点占4行
第二列 1、2各占2行
第三列 各占一行
循环列 里面 再循环行
2.把整个表格打到页面,然后加载完成以后合拼相同列.
#2
正确的思路是:你要首先把最后这个图
在你的程序中的数据结构写出来,而不要纠结数据库表中原始数据。纠结数据库表原始数据,只会绕来绕去,一直在你觉得最傻瓜化的那点概念上打转而找不到方向。
在你的程序中的数据结构写出来,而不要纠结数据库表中原始数据。纠结数据库表原始数据,只会绕来绕去,一直在你觉得最傻瓜化的那点概念上打转而找不到方向。
#3
之所以“这个问题考虑了很久”,你看看自己(以及身边的人)的知识描述方式就会发现,如果都是拼凑的模式,躺在别人的例子上去抄袭,一直学习的都是最低级的分析设计规范,而懒得按照实践者的方法规范去设计程序。
#4
在页面后台用StringBuilder拼接table,tr,td,再把页面后台拼接好的表格显示到页面上,然后将页面上的表格导出
页面前台:
在页面上显示好表格之后,如果你还想将表格导出到Word文档里,就用下面的方法:
页面前台:
<asp:ImageButton ID="Button1" runat="server" OnClick="Button1_Click"
ToolTip="查询" />
<div id="divp" runat="server" style="display:inline-block;">
</div>
<input type="hidden" runat="server" id="hideReport" value="" />
protected void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
ShowTable();
}
}
protected void Button1_Click(object sender, ImageClickEventArgs e)
{
ShowTable();
}
public void ShowTable()
{
divp.InnerHtml = ShowTableFunction();
}
public string ShowTableFunction()
{
StringBuilder StringText = new StringBuilder();
StringText.Append("<div style='overflow:auto;margin:0px;padding:0px;'>");
如 图二,得出 4 行 3列
第一列 根节点占4行
第二列 1、2各占2行
第三列 各占一行
循环列 里面 再循环地拼接table,tr,td
StringText.Append("</div>");
return StringText.ToString();
}
在页面上显示好表格之后,如果你还想将表格导出到Word文档里,就用下面的方法:
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=OrderReport(" + System.DateTime.Now.Year + System.DateTime.Now.Month + System.DateTime.Now.Day + ").doc");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-word";
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
divp.Visible = true;
this.divp.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
divp.Visible = false;
Response.End();
#1
1.手动拼table.
计算出这个table几行、几列.
一个id占几行
如 图二的话,算出 4 行 3列
第一列 根节点占4行
第二列 1、2各占2行
第三列 各占一行
循环列 里面 再循环行
2.把整个表格打到页面,然后加载完成以后合拼相同列.
计算出这个table几行、几列.
一个id占几行
如 图二的话,算出 4 行 3列
第一列 根节点占4行
第二列 1、2各占2行
第三列 各占一行
循环列 里面 再循环行
2.把整个表格打到页面,然后加载完成以后合拼相同列.
#2
正确的思路是:你要首先把最后这个图
在你的程序中的数据结构写出来,而不要纠结数据库表中原始数据。纠结数据库表原始数据,只会绕来绕去,一直在你觉得最傻瓜化的那点概念上打转而找不到方向。
在你的程序中的数据结构写出来,而不要纠结数据库表中原始数据。纠结数据库表原始数据,只会绕来绕去,一直在你觉得最傻瓜化的那点概念上打转而找不到方向。
#3
之所以“这个问题考虑了很久”,你看看自己(以及身边的人)的知识描述方式就会发现,如果都是拼凑的模式,躺在别人的例子上去抄袭,一直学习的都是最低级的分析设计规范,而懒得按照实践者的方法规范去设计程序。
#4
在页面后台用StringBuilder拼接table,tr,td,再把页面后台拼接好的表格显示到页面上,然后将页面上的表格导出
页面前台:
在页面上显示好表格之后,如果你还想将表格导出到Word文档里,就用下面的方法:
页面前台:
<asp:ImageButton ID="Button1" runat="server" OnClick="Button1_Click"
ToolTip="查询" />
<div id="divp" runat="server" style="display:inline-block;">
</div>
<input type="hidden" runat="server" id="hideReport" value="" />
protected void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
ShowTable();
}
}
protected void Button1_Click(object sender, ImageClickEventArgs e)
{
ShowTable();
}
public void ShowTable()
{
divp.InnerHtml = ShowTableFunction();
}
public string ShowTableFunction()
{
StringBuilder StringText = new StringBuilder();
StringText.Append("<div style='overflow:auto;margin:0px;padding:0px;'>");
如 图二,得出 4 行 3列
第一列 根节点占4行
第二列 1、2各占2行
第三列 各占一行
循环列 里面 再循环地拼接table,tr,td
StringText.Append("</div>");
return StringText.ToString();
}
在页面上显示好表格之后,如果你还想将表格导出到Word文档里,就用下面的方法:
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=OrderReport(" + System.DateTime.Now.Year + System.DateTime.Now.Month + System.DateTime.Now.Day + ").doc");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-word";
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
divp.Visible = true;
this.divp.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
divp.Visible = false;
Response.End();