Listview到Excel HTML标记问题

时间:2010-08-20 15:54:57

标签: .net asp.net listview user-controls controls

我正在使用类似于代码提及的代码 http://www.dutch-creatives.com/post/2009/08/11/Export-ListView-to-Excel.aspx 将Listview导出为ex​​cel

我的列表视图

<asp:ListView ID="lv" runat="server">                         
      <LayoutTemplate>
          <table runat="server" id="table1" class="datatable" >
               <tr class="row" id="tableRow" runat="server">
                 <th rowspan="2"></th>
               </tr>
                <tr runat="server" id="itemPlaceholder"></tr>
          </table>
      </LayoutTemplate> 
      <ItemTemplate>
          <tr id="Tr1" runat="server"  class="row">
               <td id="Td1" runat="server">
                    <asp:Label ID="Label6" runat="server" 
                              Text='<%#Eval("xyz") %>' />
               </td>
          </tr>
       </ItemTemplate>    
  </asp:ListView>

我正在添加标题如下

 ' Create a form to contain the grid
                Dim table = New HtmlTable()
                Dim tCell = New HtmlTableCell()
                Dim tRow = New HtmlTableRow()

                'Add the header row
                Dim header As HtmlTableRow = DirectCast(_listview.FindControl("tableRow"), HtmlTableRow)
                ExlUtil.ConvertControl(header)
                table.Rows.Add(header)

然后每个项目

For Each item As ListViewDataItem In _listview.Items
                    tCell.Controls.Add(item)
                    tRow.Controls.Add(tCell)
                    ExlUtil.ConvertControl(item)
                    table.Rows.Add(tRow)
                Next



table.RenderControl(htw) //htw is htmltextwriter object

但是这个(table.RenderControl)将最终的html代码呈现为

<table>
  <tr>
    <th></th>
    <th></th>
    <th></th>
  </tr>
  <tr> 'problem here
    <td> 'problem here

        <tr> <td></td> </tr>
        <tr> <td></td> </tr>

    </td>
  </tr>
</table>

我试图调试,理解为什么它会产生额外的tr td但却不能。 谁能告诉我为什么它会产生额外的tr,td标记?

1 个答案:

答案 0 :(得分:0)

通过将所有内容更改为仅两行代码

来解决此问题
ExlUtil.ConvertControl(_listview)
                _listview.RenderControl(htw)