0

asp.nets webforms と gridview を使用して、Web サイトに大きなデータ テーブルを作成しています。また、グリッドビュー全体をExcelファイルにダウンロードできるようにするコードビハインドの非常に簡単な方法もあります。sqlDataSource で selectCommand を作成すると、これはすべて完全に機能します。私の問題は、コード ビハインドで SelectCommand を作成して、多くのパラメーターを追加し、より動的にすることです。sqlDataSource SelectCommand にもパラメーターを追加できることは知っていますが、コード ビハインドで必要なことを行うのははるかに簡単です。

コード ビハインドで作成された selectCommand は完全に機能し、グリッドビューを表示します。問題は、Excel にダウンロードしようとすると、Excel ファイルが空になることです。つまり、グリッドビューからのデータは引き継がれません。select コマンドを作成する方法と関係があるに違いないと思います... これが私のやり方です。

Aspx ファイル:

<asp:SqlDataSource ID="RegionCompliance" Runat="server"
    ConnectionString="<%$ ConnectionStrings:ApplicationServices %>">        
</asp:SqlDataSource>   

<%  
    SetSelectCommand(); // this is where the select command is created
%>

<h2>
    Download To:    
    <asp:LinkButton  ID="Button1" runat="server" OnClick="DownloadToExcel" Text="Excel" />
</h2>


    <asp:GridView 

        ID="GridView1" 
        DataSourceID="RegionCompliance" 
        DataKeyNames="Region">

        <Columns>
            <asp:BoundField ReadOnly="true" HeaderText="Region" DataField="Region"></asp:BoundField>
        </Columns>
   </asp:GridView>

select コマンドが作成されるコード ビハインド

protected void SetSelectCommand()
{
    sqlCommand = SELECT region FROM tablename
    RegionCompliance.SelectCommand = sqlCommand;
}

sqlDataSource で選択コマンドを作成すると、それ自体が完全に機能します...これにより、Excel ファイルで selectCommand と gridview データの使用が許可されない理由を誰でも理解できますか?

4

2 に答える 2

2

コード ブロックはrender 中に作成されていますが、これは Excel には遅すぎます (呼び出されているかどうかはデバッガーで確認できます)。このメソッドは、Excel ファイルを作成するときに明示的に呼び出すことができ、また を呼び出すこともできますDataBind()

于 2012-08-16T16:15:38.773 に答える
0

ページメソッドを使用する必要があります...

protected void Page_Load(object sender, EventArgs e)
{
    RegionCompliance.SelectCommand = "SELECT region FROM tablename"
}

そのようにインラインでメソッドを呼び出そうとしてはいけません。これは古典的なASPのものです。

于 2012-08-16T16:13:57.483 に答える