VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 849|回复: 9

绑定数据,然后在表中按自己想显示的格式显示其中的内容

[复制链接]

3

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-14 16:00:01 | 显示全部楼层 |阅读模式
--------------------------------------------------------------------------
| 课|课| 课程 |  课程名称  | 学时分配     |      学时安排            |百 |
| 程|程| 编号 |            |--------------|--------------------------|分 |
| 性|类|      |            |讲课|实验|上机|第一学年|第二学年|第三学年|比 |
| 质|别|      |            |              |--------------------------|   |
|------|------|------------|--------------| 一 | 二| 一 | 二| 一 | 二|---|
| 必|公|111000| 马克思原理 | 48 | 48 | 0  | 3  |   |    |   |    |   |   |
|   |共|111001|  *******   | 25 | 25 | 0  |    | 3 |    |   |    |   |   |
| 修|课|      |            |    |    |    |    |   |    |   |    |   |   |
|   |----------------------------------------------------------------|   |
|   |小计                       | 73 | 73 | 0  | 3 | 3  |   |    |   |   |
|   |----------------------------------------------------------------|---|
|   |选|111000| 马克思原理 | 48 | 48 | 0  | 3  |   |    |   |    |   |   |
|   |修|111001|  *******   | 25 | 25 | 0  |    | 3 |    |   |    |   |   |
|   |课|      |            |    |    |    |    |   |    |   |    |   |   |
|   |--|------|------------|--------------|--------------------------|   |
|   |小计                  | 73 | 73 | 0  | 3  | 3 |    |   |    |   |   |
|---|--------------------------------------------------------------------
我想把我从数据库中获取的数据按这中方式显示出来 这只是一个列子,还有很多个公共课下同一级别的科目,这种方式在Asp.Net中怎么实现
回复

使用道具 举报

0

主题

23

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-4-30 21:30:01 | 显示全部楼层
自己组织一个DataTable就行了
回复

使用道具 举报

0

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-5-1 10:15:01 | 显示全部楼层
我靠,这个表有难度,不要用自带的控件如Repeater,DataGrid,那样估计很难搞出来,自己在后台写一个table,同时把DataSet数据绑定上去,然后把这个HTML输出到前台...
回复

使用道具 举报

0

主题

26

帖子

20.00

积分

新手上路

Rank: 1

积分
20.00
发表于 2020-5-1 18:00:01 | 显示全部楼层
你这种表格如果用DataGrid(vs2003)或GridView(vs2005)实现的话,可能难度会比较大。
我建议你用html写一个table,用这种方法的前提就是此表格基本不需要进行操作,只是显示而已。
你需要在cs中定义一个public 型的变量,然后在cs中为这个变量负值:
public string StrTab=null;
在Page_Load事件中写:
StrTab="<table>"+
            "<tr>"+
                "<td>列1</td>"+
                "<td>列2</td>"+
            "</tr>"+
        "</table>";
然后你将此变量放在HTML代码中:
<form id="form1" runat="server">
<%= StrTab%>
</form>
这样就可以实现了,至于此表的内部格式还需要你进行逻辑判断、组合后形成的(这个就不难了)。
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-5-1 22:30:01 | 显示全部楼层
呵呵。这个也不难啊。
如果表格是死的。那就先划表格,用Label绑定数据就行了。
如果是动态的,视数据库如何设计而定。但是原则上是以ASP:TABLE,拼出来,需要从数据中知道每个框需要跨几行,几列。
大致的意思如下:
dim tr as TableRow
dim tc as TableCell

for循环
   tr=new TableRow
   for循环
      tc=new TableCell
      tc.text=要的数据
      tc.RowSpan=行跨格数
      tc.ColSpan=列跨格数
      tr.Cells.add(tc)
   next
   Table1.Rows.add(tr)
next

细节就得自己想了。反正我是用了三天,拼出了一个大的报表,涉及到八个数据库表,用了四层For循环。你这个我估计会简单不少吧。
回复

使用道具 举报

0

主题

14

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-5-2 09:00:02 | 显示全部楼层
考虑使用Xml和Xsl:根据列名和特殊行的数据(如:小计)利用样式表Xsl形成上述标题和内容
回复

使用道具 举报

0

主题

14

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-5-2 19:45:01 | 显示全部楼层
简单样例:
xml文件格式:
<?xml version="1.0" encoding="utf-8" ?>
<!-- 此Xml文件为部门月度资金计划报表查询结果记录对应的Xml格式的模版文件 -->
<MonthBankRollPlanOfDepartReport >
        <SchemaInfo><!--样式-->
                <Columns><!--列-->
                        <Titles class = "dgdTitle" height = "20px" align = "center">
                                <!--标题详细信息:Style:样式;IsFixed:是否固定;TitleName:标题名称-->
                                <TitleDetail width = "270" IsFixed = "true" TitleName = "费用类别">
                                        <!--列的详细信息:ColumnName:列名称;Style:样式;IsUnit:列中相同数据时候合并;align:文字的位置-->
                                        <ColumnDetail ColumnName = "TopSysExpenseItemName" width = "120" IsUnit = "true" align = "center" />
                                        <ColumnDetail ColumnName = "SysExpenseItemName" width = "150"  align = "center" />
                                </TitleDetail>
                                <TitleDetail width = "150" IsFixed = "true" TitleName = "小计">
                                        <ColumnDetail ColumnName = "Total" width = "150"  align = "right" />
                                </TitleDetail>
                                <!--默认标题-->
                                <DefaultTitle width = "150">
                                        <ColumnDetail width = "150" align = "right" />
                                </DefaultTitle>
                        </Titles>
                </Columns>
                <Rows>
                        <!--一些行的颜色:ColumnName:判断的列-->
                        <RowColors ColumnName = "SysExpenseItemName">
                                <RowDetail ColumnValue = "开发成本小计" bgcolor = "#aee6ff" />
                                <RowDetail ColumnValue = "期间费用小计" bgcolor = "#aee6ff" />
                                <RowDetail ColumnValue = "其他支出小计" bgcolor = "#aee6ff" />
                                <RowDetail ColumnValue = "现金流出小计" bgcolor = "#aee6ff" />
                                <RowDetail ColumnValue = "现金流入小计" bgcolor = "#aee6ff" />
                        </RowColors>
                        <!--一些行的占用列数:ColumnName:判断的列-->
                        <ColumnUnit ColumnName = "SysExpenseItemName" colspan = "2">
                                <RowDetail ColumnValue = "现金流出小计" />
                                <RowDetail ColumnValue = "现金流入小计" />
                                <RowDetail ColumnValue = "净现金流量" />
                        </ColumnUnit>
                        <RowLinks >
                                <RowDetail ColumnValue = "开发成本"  LinkType = "1"  ColumnName = "TopSysExpenseItemName" />
                                <RowDetail ColumnValue = "销售费用"  LinkType = "1"  ColumnName = "SysExpenseItemName"  />
                                <RowDetail ColumnValue = "项目推广费用"  LinkType = "1"  ColumnName = "SysExpenseItemName"  />
                                <RowDetail ColumnValue = "管理费用"  LinkType = "1"  ColumnName = "SysExpenseItemName"  />
                                <RowDetail ColumnValue = "开发间接费"  LinkType = "1"   ColumnName = "SysExpenseItemName" />
                                <RowDetail ColumnValue = "财务费用"  LinkType = "1"  ColumnName = "SysExpenseItemName"  />
                                <RowDetail ColumnValue = "税金"  LinkType = "1"   ColumnName = "SysExpenseItemName" />
                                <RowDetail ColumnValue = "股东分红"  LinkType = "1"   ColumnName = "SysExpenseItemName" />
                                <RowDetail ColumnValue = "本月承兑支付"  LinkType = "2"   ColumnName = "SysExpenseItemName" />
                                <RowDetail ColumnValue = "本月新增承兑"  LinkType = "2"   ColumnName = "SysExpenseItemName" />
                        </RowLinks>
                </Rows>       
        </SchemaInfo>
        <Data><!--数据-->
                <ColumnInfo>
                        <ColumnDetail ColumnName = "***" />
                </ColumnInfo>
                <DataInfo>
                        <!--数据格式-->
                        <DataDetail>
                                <FieldDetail Name = "***" Value = "" />
                                <FieldDetail Name = "***" Value = "" />
                        </DataDetail>
                        <DataDetail>
                                <FieldDetail Name = "***" Value = "" />
                                <FieldDetail Name = "***" Value = "" />
                        </DataDetail>               
                </DataInfo>               
        </Data>
</MonthBankRollPlanOfDepartReport>
回复

使用道具 举报

0

主题

14

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-5-2 22:15:01 | 显示全部楼层
Xsl格试:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet  version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--全局变量-->
<xsl:variable name = "Columns" select = "/MonthBankRollPlanOfDepartReport/SchemaInfo/Columns" /><!--列的格式-->
<xsl:variable name = "Rows" select = "/MonthBankRollPlanOfDepartReport/SchemaInfo/Rows" /><!--行的格式-->
<xsl:variable name = "ColumnInfo" select = "/MonthBankRollPlanOfDepartReport/Data/ColumnInfo" /><!--数据列信息-->
<xsl:variable name = "DataInfo" select = "/MonthBankRollPlanOfDepartReport/Data/DataInfo" /><!--数据信息-->
<xsl:variable name = "ShowMonthColumn" select = "/MonthBankRollPlanOfDepartReport/Data/ColumnInfo/ColumnDetail[starts-with(@ColumnName, 'A')]" /><!--显示月的列-->
<xsl:variable name = "UnitColumnName" select = "/MonthBankRollPlanOfDepartReport/SchemaInfo/Columns/Titles/TitleDetail/ColumnDetail[@IsUnit = 'true']/@ColumnName" /><!--合并列名称-->
<xsl:variable name = "RowColorColumnName" select = "$Rows/RowColors/@ColumnName" /><!--行颜色列名-->

<!--模版-->
<!--得到月份列标题-->
<xsl:template name = "GetMonthTitle" >
        <xsl:param name = "TitleIndex" /><!--标题索引-->
        <xsl:variable name = "ColumnName" select = "$ShowMonthColumn[$TitleIndex]/@ColumnName" />
        <xsl:value-of select = "substring($ColumnName, 2, 4)" /><xsl:value-of select = "'年'" /><xsl:value-of select = "substring($ColumnName, 6)" /><xsl:value-of select = "'月'" />
</xsl:template>

<!--得到标题-->
<xsl:template name = "GetTitle">
        <tr  align = "center">
                <!--指定格式标题-->
                <xsl:for-each select = "$Columns/Titles/TitleDetail">
                        <td  width = "{./@width}px" >
                                <xsl:choose>
                                        <xsl:when test = "./@IsFixed = 'true'">
                                                <xsl:attribute name = "style">
                                                        <xsl:value-of select = "'background-color:#BED8FD;border-right:1px solid #cccccc;border-top:1px solid #cccccc;position:relative;left:expression(this.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.scrollLeft)'" />
                                                </xsl:attribute>
                                        </xsl:when>
                                        <xsl:otherwise>
                                                <xsl:attribute name = "style">
                                                        <xsl:value-of select = "'border-right:1px solid #cccccc;border-top:1px solid #cccccc;'" />
                                                </xsl:attribute>
                                        </xsl:otherwise>
                                </xsl:choose>
                               
                                <!--标题名称-->
                                <xsl:value-of select = "./@TitleName" />
                        </td>
                </xsl:for-each>
                <!--月份标题-->
                <xsl:for-each select = "$ShowMonthColumn" >
                        <td width = "{$Columns/Titles/DefaultTitle/@width}px"   style = "border-right:1px solid #cccccc;border-top:1px solid #cccccc;">
                                <xsl:call-template name = "GetMonthTitle">
                                        <xsl:with-param name = "TitleIndex" select = "position()" />
                                </xsl:call-template>
                        </td>
                </xsl:for-each>
        </tr>
</xsl:template>

<!--得到导航的列名-->
<xsl:template name = "GetRowLinksColumnName">
        <xsl:param name = "DataDetail" /><!--行的详细信息-->
        <xsl:for-each select = "$Rows/RowLinks/RowDetail" >
                <xsl:variable name = "RowDetail" select = "." />
                <xsl:if test = "$DataDetail/FieldDetail[@Name = $RowDetail/@ColumnName]/@Value = $RowDetail/@ColumnValue" >
                        <xsl:value-of select = "$RowDetail/@ColumnName" />
                </xsl:if>
        </xsl:for-each>
</xsl:template>

<!--得到显示的数据-->
<xsl:template name = "GetShowValue">
        <xsl:param name = "ColumnName" />
        <xsl:param name = "ShowValue" />
        <xsl:param name = "Position" />       
       
        <xsl:variable name = "DataDetail" select = "$DataInfo/DataDetail[$Position]" />
       
        <xsl:variable name = "RowLinksColumnName" ><!--导航列名-->
                <xsl:call-template name = "GetRowLinksColumnName" >
                        <xsl:with-param name = "DataDetail" select = "$DataDetail" />
                </xsl:call-template>
        </xsl:variable>
        <xsl:variable name = "RowLinksValue" select = "$DataDetail/FieldDetail[@Name = $RowLinksColumnName]/@Value" />
        <!--得到超链接类型-->
        <xsl:variable name = "LinkType">
                <xsl:choose>
                        <xsl:when test = "count($Rows/RowLinks/RowDetail[@ColumnValue = $RowLinksValue ] ) > 0 and not(contains($DataDetail/FieldDetail[@Name = 'SysExpenseItemName']/@Value, '小计') )" >
                                <xsl:value-of select = "$Rows/RowLinks/RowDetail[@ColumnValue = $RowLinksValue ]/@LinkType" />
                        </xsl:when>
                        <xsl:otherwise>
                                <xsl:value-of select = "-1" />
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:variable>
        <xsl:choose>
                <xsl:when test = "number($ShowValue) " ><!--数字-->
                        <xsl:choose>
                                <xsl:when test = "$ColumnName = 'Total'">
                                        <xsl:value-of select = "format-number($ShowValue, '#,###.00')" />
                                </xsl:when>
                                <xsl:otherwise>
                                        <xsl:choose>
                                                <xsl:when test = "number($ShowValue) != 0 ">                               
                                                        <xsl:choose>
                                                                <xsl:when test = "$LinkType != -1 ">                                                               
                                                                        <a href="#" onclick="GetDataList('{$DataDetail/FieldDetail[@Name = 'CompanyID']/@Value}', '{$DataDetail/FieldDetail[@Name = 'SysExpenseItemID']/@Value}', '{$ColumnName}', '{$DataDetail/FieldDetail[@Name = 'DepartIDs']/@Value}', '{$LinkType}');">
                                                                                <xsl:value-of select = "format-number($ShowValue, '#,###.00')" />       
                                                                        </a>                       
                                                                </xsl:when>
                                                                <xsl:otherwise>
                                                                        <xsl:value-of select = "format-number($ShowValue, '#,###.00')" />
                                                                </xsl:otherwise>
                                                        </xsl:choose>                               
                                                </xsl:when>
                                                <xsl:otherwise>
                                                        <xsl:value-of select = "format-number($ShowValue, '#,###.00')" />
                                                </xsl:otherwise>
                                        </xsl:choose>       
                                </xsl:otherwise>
                        </xsl:choose>                       
                </xsl:when>
                <xsl:otherwise>                       
                        <xsl:choose>                               
                                <xsl:when test = "$LinkType = 1 and $ShowValue != '0'" ><!--导航的费项-->
                                        <a href="#" onclick="GetSysExpenseItemList('{$DataDetail/FieldDetail[@Name = 'CompanyID']/@Value}', '{$DataDetail/FieldDetail[@Name = 'SysExpenseItemID']/@Value}', '{$DataDetail/FieldDetail[@Name = 'DepartIDs']/@Value}');">
                                                <xsl:value-of select = "$ShowValue" />
                                        </a>       
                                </xsl:when>
                                <xsl:otherwise>
                                        <xsl:value-of select = "$ShowValue" />
                                </xsl:otherwise>
                        </xsl:choose>                       
                </xsl:otherwise>
        </xsl:choose>
</xsl:template>

回复

使用道具 举报

0

主题

32

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-5 09:00:02 | 显示全部楼层
嗯,xml+xslt是好办法,适用格式不变,只变数据的情况。
回复

使用道具 举报

0

主题

58

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-5-10 22:45:01 | 显示全部楼层
使用xml+xslt
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表