导出gridview到excel不能使用Ajax和Update面板

时间:2016-01-16 07:48:11

标签: asp.net vb.net gridview

我在“更新”面板中有一个网格视图。 grid-view中有一个链接按钮,它在行命令事件中触发导出命令。还有一个网格视图可以在此命令代码中导出。我调试,指针进入,但导出没有发生。我知道我在这里遗漏了一些东西,但是在花了很多时间后却无法得到它。脚本管理器位于母版页上。

请任何人帮忙。以下是代码。

  <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>
                <asp:GridView ID="grd_Report" runat="server" ShowFooter="true" CssClass="ui-jqgrid-btable table-hover" AutoGenerateColumns="false" AllowPaging ="true" PageSize ="12"  >
                <Columns>

                <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                <asp:Label ID="lbl_CampaignName" runat="server" Text='<%#Eval("Name") %>'></asp:Label>
                </ItemTemplate>
                <ItemStyle Width="100px" />
                <HeaderStyle Width="100px" />
                </asp:TemplateField>

                <asp:TemplateField HeaderText="CreateDate">
                <ItemTemplate>
                <asp:Label ID="lbl_CreateDate" runat="server" Text='<%#Eval("CreateDate") %>'></asp:Label>
                </ItemTemplate>
                <ItemStyle Width="130px" />
                <HeaderStyle Width="130px" />
                </asp:TemplateField>


                <asp:TemplateField HeaderText="sender">
                <ItemTemplate>
                <asp:Label ID="lbl_senderID" runat="server" Text='<%#Eval("sender") %>'></asp:Label>
                </ItemTemplate>
                <ItemStyle Width="85px" />
                <HeaderStyle Width="85px" />
                </asp:TemplateField>


                <asp:TemplateField HeaderText="Text">
                <ItemTemplate>
                <asp:Label ID="lbl_text" runat="server" Text='<%#Eval("Text") %>'></asp:Label>
                </ItemTemplate>
                <FooterTemplate>
                <asp:DropDownList class="ui-pg-selbox" ID="drp_itemCount" runat="server" AutoPostBack="true"
                        onselectedindexchanged="drp_itemCount_SelectedIndexChanged" >
                <asp:listItem>10</asp:listItem>
                <asp:listItem>15</asp:listItem>
                <asp:listItem>50</asp:listItem>
                <asp:listItem>100</asp:listItem>
                <asp:listItem>200</asp:listItem>
                </asp:DropDownList>
                </FooterTemplate>

                <ItemStyle Width="375px" />
                <HeaderStyle Width="375px" />
                <FooterStyle HorizontalAlign="Center"  />
                </asp:TemplateField>


                <asp:TemplateField HeaderText="Count">
                <ItemTemplate>
                <asp:Label ID="lbl_SMSCount" runat="server" Text='<%#Eval("Count") %>'></asp:Label>
                </ItemTemplate>
                <ItemStyle HorizontalAlign="Center" width="80px" />
                <HeaderStyle Width="80px" />
                </asp:TemplateField>


                <asp:TemplateField HeaderText="Delivery Count">
                <ItemTemplate>
                <table class="deliveryCount">
                <tr>
                <td style="padding:5px;width:180px" colspan="2">Total: <%#Eval("Total")%></td>
                </tr>

                <table style="font-size:11px;width:180px;">
                <tr>
                <td style="padding:5px;font-size:11px;width:80px">A: <%#Eval("A")%></td>
                <td style="padding:5px;font-size:11px;width:80px">B: <%#Eval("B")%></td>
                </tr

                    <tr>
                <td style="padding:5px;font-size:11px;width:80px">2: <%#Eval("2")%></td>
                <td style="padding:5px;font-size:11px;width:80px">1: <%#Eval("1")%></td>
                </tr>

                </table>


                </ItemTemplate>
                </asp:TemplateField>



                <asp:TemplateField HeaderText="Download">
                <ItemTemplate>
                <asp:LinkButton runat="server" ID="lnk_download" style="font-size:11px;" CommandName="download" CommandArgument='<%#Eval("CampaignId") %>' text="Download"  class="ui-icon-document"></asp:LinkButton>
                </ItemTemplate>
                <ItemStyle HorizontalAlign="Center" width="100px" />
                <HeaderStyle Width="100px" />
                </asp:TemplateField>



                </Columns>
                <HeaderStyle HorizontalAlign="Center" Font-Size="13" Font-Bold="true"  />
                <RowStyle Font-Names="Helvetica" Font-Size="10" />
                <PagerStyle CssClass ="gridviewPager" Height="30px" />
                </asp:GridView>
                </ContentTemplate>
                <Triggers>
                <asp:AsyncPostBackTrigger ControlID="grd_export" EventName="RowCommand" />
                </Triggers>
                </asp:UpdatePanel>



<asp:UpdatePanel ID="UpdatePanel6" runat="Server">
   <ContentTemplate>
   <asp:GridView ID="grd_export" runat="server" Visible="false" AutoGenerateColumns ="false" >
<Columns>

<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lbl_Name" runat="server" Text='<%#Eval("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Number">
<ItemTemplate>
<asp:Label ID="lbl_Number" runat="server" Text='<%#Eval("Number") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<asp:Label ID="lbl_Id" runat="server" Text='<%#Eval("Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Text">
<ItemTemplate>
<asp:Label ID="lbl_text" runat="server" Text='<%#Eval("Text") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="text Id">
<ItemTemplate>
<asp:Label ID="lbl_MessageId" runat="server" Text='<%#Eval("textId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="lbl_Date" runat="server" Text='<%#Eval("Date") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lbl_Status" runat="server" Text='<%#Eval("Status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Credits">
<ItemTemplate>
<asp:Label ID="lbl_Credits" runat="server" Text='<%#Eval("Credits") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>
   </ContentTemplate>

   </asp:UpdatePanel>

以下是行命令事件

的代码
 If e.CommandName = "download" Then
        Dim str As String
        str = " select * FROM [Box] where   MsgId='" + e.CommandArgument + "'"
        Dim com As New SqlCommand(str, con)
        Dim da As New SqlDataAdapter(com)
        Dim dt As New DataTable
        da.Fill(dt)

        If Not dt Is Nothing Then
            If dt.Rows.Count > 0 Then
                grd_export.DataSource = dt
                grd_export.DataBind()
                grd_export.Visible = True
                Response.Clear()
                Response.Cache.SetCacheability(HttpCacheability.NoCache)
                Response.AddHeader("content-disposition", "attachment;filename=Message.xls")
                Response.Charset = ""
                Response.ContentType = "application/vnd.xls"
                Me.EnableViewState = False
                Dim stringwrite As System.IO.StringWriter = New System.IO.StringWriter
                Dim htmlwrite As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(stringwrite)
                grd_export.RenderControl(htmlwrite)
                Response.Write(stringwrite.ToString())
                grd_export.Visible = False
                Response.End()


            End If
        End If

    End If

1 个答案:

答案 0 :(得分:0)

您需要在postback trigger update panel添加respose.write才能使用import {bootstrap} from 'angular2/platform/browser'; import {Component, View} from 'angular2/core'; @Component({ })