-1

c#.net からのエクスポート 問題が発生しています。Excel にエクスポートすると、Excel の結果としてフォームが表示されます。なぜこれが起こっているのか、以下の ASP コードを含めます。

<%@ Page Language="C#" MasterPageFile="~/masterpages/Admin.master" AutoEventWireup="true" CodeFile="members-search-adv.aspx.cs" Inherits="masteradmin_members_search_adv" Title="LISA - Life Insurance Settlement" %>
<%@ Register TagPrefix="UC" TagName="Paging" Src="~/controls/Paging.ascx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <script type="text/javascript" src="sorttable.js"></script>
 Go to <a href="members-search.aspx" class="link">Quick Search</a>
<h1>Contact Database - Advanced Search</h1>
<asp:Label ID="lblSearchCriteria" runat="server" Text=""  ForeColor="blue"></asp:Label>
<table width="100%" cellspacing="0" cellpadding="0">
    <tr>
        <td valign="top" width="50%">
<table border="0" cellpadding="3" cellspacing="1" style="height: 214px; width: 101%;">  
    <tr>
        <td class="form1" align="right"><strong>OpenSearch:</strong></td>
        <td class="form2">
            <asp:TextBox ID="txtSearch" runat="server" CssClass="fields" Width="245px" ></asp:TextBox><b>*</b>&nbsp;<br><b>*</b><small>Search By Company Name, First Name, Last Name, Tags, Comments</small></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>Industry Segment:</strong></td>
        <td class="form2"><asp:DropDownList ID="ddlIndSegment" runat="server" CssClass="fields" /></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>Member Type:</strong></td>
        <td class="form2"><asp:DropDownList ID="ddlMemberType" runat="server" CssClass="fields" /></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>Member Rep only:</strong></td>
        <td class="form2"><asp:CheckBox ID="cbxMemberRep" runat="server" /></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>Board Only:</strong></td>
        <td class="form2"><asp:CheckBox ID="cbxBoardOnly" runat="server" /></td>
    </tr>
    <tr>
        <td colspan="2" align="right">
            <asp:ImageButton ID="btnSearch" runat="server" ImageUrl="/RadControls/images/bu_search.jpg" />
        </td>
    </tr>
    </table>
    </td>
        <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td valign="top" width="50%">
    <%--split the table here--%>
        <table border="0" cellpadding="3" cellspacing="1" 
            style="width: 98%; margin-left: 0px;">
    <tr>
        <td class="form1" align="right"><strong>Suspended Only:</strong></td>
        <td class="form2"><asp:CheckBox ID="cbxSuspended" runat="server" /></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>Active Only:</strong></td>
        <td class="form2"><asp:CheckBox ID="cbxActiveOnly" runat="server" /></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>Allow Other Members To See My Info Only:</strong></td>
        <td class="form2"><asp:CheckBox ID="cbxAllowOtherMembers" runat="server" /></td>
    </tr>
    <tr>
        <td class="form1" align="right"><strong>State:</strong></td>
        <td class="form2"><asp:DropDownList ID="ddlState" runat="server" CssClass="fields" /></td>
    </tr>
        <tr>
        <td class="form1" align="right"><strong>By Special Level:</strong></td>
        <td class="form2"><asp:DropDownList ID="ddlSpecialLevel" runat="server" CssClass="fields" /></td>
    </tr>

    <tr>
        <td class="form1" align="right"><strong>Sort by:</strong></td>
        <td class="form2">
            <asp:DropDownList ID="ddlSortBy" runat="server" CssClass="fields">
                <asp:ListItem Value="CompanyName">Company</asp:ListItem>    
                <asp:ListItem Value="FirstName">First Name</asp:ListItem>
                <asp:ListItem Value="LastName">Last Name</asp:ListItem>
                <asp:ListItem Value="MemberCategoryId">Membership Type</asp:ListItem>
                <asp:ListItem Value="IndustrySegmentId">Industry Segment</asp:ListItem>
            </asp:DropDownList>
        </td>
    </tr>

</table>    
</td>
</tr>
</table>
    <table  border="0" cellpadding="3" cellspacing="1" width="100%">        
<tr>
<td><asp:Literal ID="litTotalCount" runat="server" /></td><td align=left class="form3">
    <asp:Button ID="Button1" runat="server"  onclick="Button1_Click" Text="Button" />
    <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">Export To Excel</asp:LinkButton>
    <small>* Click on the column to SORT</small></td></tr>
</table>

    <asp:Repeater ID="rptList" runat="server">
        <HeaderTemplate>
        <table class="sortable" border="0" cellpadding="3" cellspacing="1" width="100%">        
            <tr>
                <td align="left" valign="top" class="form1"><b>Company</b></td>
                <td align="left" valign="top" class="form1"><b>First Name</b></td>
                <td align="left" valign="top" class="form1"><b>Last Name</b></td>
                <td align="left" valign="top" class="form1"><b>Email</b></td>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td class="form2" align="left" valign="top"><asp:HyperLink ID="hlCompany" runat="server" CssClass="link"></asp:HyperLink></td>
                <td class="form2" align="left" valign="top"><asp:HyperLink ID="hlFirstName" runat="server" CssClass="link"></asp:HyperLink></td>
                <td class="form2" align="left" valign="top"><asp:HyperLink ID="hlLastName" runat="server" CssClass="link"></asp:HyperLink></td>
                <td class="form2" align="left" valign="top"><asp:HyperLink ID="hlEmail" runat="server" CssClass="link"></asp:HyperLink> </td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
    </asp:Repeater>

    <asp:GridView ID="GridView2" runat="server">
    </asp:GridView>

    <asp:PlaceHolder ID="PlaceHolder1" runat="server"><br />
    <UC:Paging Id="ctlPaging" runat="server" />
    </asp:PlaceHolder>
<%--    <div align="center">
        <br /><UC:Paging Id="ctlPaging" runat="server" />
    </div>--%>

</asp:Content>

申し訳ありませんが、これは問題のより良い説明です c#.net からのエクスポート 問題が発生しています Excel にエクスポートすると次のようなフォームが<div></div>表示されます データグリッドにはデータがありますが、Excel にはありません<div></div>


そして、これは私が使用している機能です

void ExportToExcel3()
 {
     Response.Clear();
     Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
     Response.Charset = "";
     Response.ContentType = "application/vnd.xls";
     System.IO.StringWriter stringWrite = new System.IO.StringWriter();
     System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
     GridView2.RenderControl(htmlWrite);
     Response.Write(stringWrite.ToString());
     Response.End();
 }



public override void VerifyRenderingInServerForm(Control control)
 {

 }

エクスポートの前にデータグリッドにデータを入力しています。これがコード行です。このコードのセクションだけで新しい Web フォームを作成し、エクスポートが機能したのはおかしいです。競合を引き起こしているページにある datarepeater に問題があると思いますか?

MemberList list = MemberDB.GetMembers(sql, m_page, m_RecordPerPage, out count, _state);
          this.GridView2.DataSource = list;
          this.GridView2.DataBind();
4

2 に答える 2

1

それはシーケンスではありません.asp.netとWebがどのように機能するかではありません.

ロード フェーズではグリッドを埋めません。データを取得してテーブルのデータソースとして設定しますが、グリッド (実際にはリピーター) はまだ埋められていません。これは、データバインディング フェーズまで発生しません。データバインディング フェーズの後 (レンダリング フェーズ中)、データ バインドされたリピーターを含むページは、最終的にサーバーによってブラウザーに送信されます。この時点で、サーバー側のものはすべて破棄されます。

これで、ブラウザーは最終的に、ユーザーがクリックできる大きな [Excel にエクスポート] ボタンを含むページを表示できます。繰り返しますが、サーバーは、あなたが苦労して構築したすべてのデータをすでに破壊しています。ユーザーがボタンをクリックすると、新しいリクエストが作成され、新しいページがブラウザに返されます。すべてのデータをグリッドに再度ロードする必要があります。

于 2008-12-18T17:57:09.183 に答える
-1

私の問題の解決策を見つけました。貢献してくれてありがとう。Load_Page イベントでは、if !postback 内にバインディングがありました。

于 2008-12-18T20:15:04.180 に答える