关于树型结构数据生成表格问题

zjy040191 2016-09-10 11:35:02
有这么一个树形结构的数据以及在数据库中存储的表的形式

现在已经获取到了表的数据list,要输出如这样的表格


这个问题考虑了很久,这个应该还涉及到单元格合并,奈何水平有限,求大神给个思路
...全文
528 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1.手动拼table. 计算出这个table几行、几列. 一个id占几行 如 图二的话,算出 4 行 3列 第一列 根节点占4行 第二列 1、2各占2行 第三列 各占一行 循环列 里面 再循环行 2.把整个表格打到页面,然后加载完成以后合拼相同列.
abz7676 2016-09-11
  • 打赏
  • 举报
回复
在页面后台用StringBuilder拼接table,tr,td,再把页面后台拼接好的表格显示到页面上,然后将页面上的表格导出 页面前台:


<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();

  • 打赏
  • 举报
回复
之所以“这个问题考虑了很久”,你看看自己(以及身边的人)的知识描述方式就会发现,如果都是拼凑的模式,躺在别人的例子上去抄袭,一直学习的都是最低级的分析设计规范,而懒得按照实践者的方法规范去设计程序。
  • 打赏
  • 举报
回复
正确的思路是:你要首先把最后这个图

在你的程序中的数据结构写出来,而不要纠结数据库表中原始数据。纠结数据库表原始数据,只会绕来绕去,一直在你觉得最傻瓜化的那点概念上打转而找不到方向。

62,253

社区成员

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

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

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

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