2014-01-16 3 views
1

Я создал динамическую таблицу asp в коде позади и имел функцию экспорта для экспорта таблицы в Excel, , но вывод Excel пуст без каких-либо данных.Экспорт динамической таблицы asp в Excel

Функция экспорта работает правильно, если это статическая таблица html.

Есть ли способ экспортировать динамическую таблицу asp?

<asp:Table id="tbl_data" runat="server" Width="95%" BackColor="White" BorderColor="Black" 
BorderWidth="1" ForeColor="Black" GridLines="Both" BorderStyle="Solid"> 
</asp:Table> 

код позади:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    If Not Page.IsPostBack Then   
     Dim trr1 As New TableRow 
     Dim tdr1_1 As New TableCell 
     Dim tdr1_2 As New TableCell 
     Dim tdr1_3 As New TableCell 
     Dim i As Integer = 0 

     'Table Header 

     '2nd row 
     Dim tr As New TableRow 
     Dim td1 As New TableCell 
     td1.Text = "Staff</br>No." 

     Dim td2 As New TableCell 
     td2.Text = "Display name (Know As)" 

     Dim td3 As New TableCell 
     td3.Text = "Current</br>Project/Office" 

     Dim td4 As New TableCell 
     td4.Text = "Current</br>Department" 

     Dim td5 As New TableCell 
     td5.Text = "Current</br>Title" 

     tr.Cells.Add(td1) 
     tr.Cells.Add(td2) 
     tr.Cells.Add(td3) 
     tr.Cells.Add(td4) 
     tr.Cells.Add(td5) 

     'another table cells 
     'xxxxxxxxxxxxxxxxxxxxxxx 

     tbl_data.Rows.AddAt(tbl_data.Rows.Count, tr) 

    end if 
end sub 

Protected Sub RadToolBar1_ButtonClick(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadToolBarEventArgs) Handles RadToolBar1.ButtonClick 
    If e.Item.Value = "Export" Then 
     Dim sw As New StringWriter() 
     Dim hw As New System.Web.UI.HtmlTextWriter(sw) 
     Dim frm As HtmlForm = New HtmlForm() 

     Page.Response.AddHeader("content-disposition", "attachment;filename=PDR_Submission_Status_Report.xls") 
     Page.Response.ContentType = "application/vnd.ms-excel" 
     Page.Response.Charset = "" 
     Page.EnableViewState = False 
     frm.Attributes("runat") = "server" 
     Controls.Add(frm) 
     frm.Controls.Add(tbl_data) 
     frm.RenderControl(hw) 
     Response.Write(sw.ToString()) 
     Response.End() 

    End If 
End Sub 

ответ

1

Ваш стол не генерируется после нажатия кнопки (If Not Page.IsPostBack Then), так что поэтому у вас нет никаких данных для экспорта.

ли табличное поколение вне блока Если Postback, и все будет хорошо :)

+0

спасибо ... может экспортировать данные, если поставить генерацию таблицы вне Postback .. –

0

ниже кода поможет you.If установить динамические генерировать таблицу в любом переменном сервере и использовать его, то он будет работать.

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     Dim trr1 As New TableRow 
     Dim tdr1_1 As New TableCell 
     Dim tdr1_2 As New TableCell 
     Dim tdr1_3 As New TableCell 
     Dim i As Integer = 0 
     Dim tr As New TableRow 
     Dim td1 As New TableCell 
     td1.Text = "Staff</br>No." 
     Dim td2 As New TableCell 
     td2.Text = "Display name (Know As)" 
     Dim td3 As New TableCell 
     td3.Text = "Current</br>Project/Office" 
     Dim td4 As New TableCell 
     td4.Text = "Current</br>Department" 
     Dim td5 As New TableCell 
     td5.Text = "Current</br>Title" 
     tr.Cells.Add(td1) 
     tr.Cells.Add(td2) 
     tr.Cells.Add(td3) 
     tr.Cells.Add(td4) 
     tr.Cells.Add(td5) 
     tbl_data.Rows.AddAt(tbl_data.Rows.Count, tr) 
     Session("TempData") = tbl_data 
    End If 
    End Sub 
    Protected Sub btn_Click(sender As Object, e As System.EventArgs) Handles btn.Click 
    Dim sw As New StringWriter() 
    Dim hw As New System.Web.UI.HtmlTextWriter(sw) 
    Dim frm As HtmlForm = New HtmlForm() 

    Page.Response.AddHeader("content-disposition", "attachment;filename=PDR_Submission_Status_Report.xls") 
    Page.Response.ContentType = "application/vnd.ms-excel" 
    Page.Response.Charset = "" 
    Page.EnableViewState = False 
    frm.Attributes("runat") = "server" 
    Controls.Add(frm) 
    frm.Controls.Add(Session("TempData")) 
    frm.RenderControl(hw) 
    Response.Write(sw.ToString()) 
    Response.End() 
    End Sub 
Смежные вопросы