Telerik RadGrid 2.0.2.0 を使用する ASP.NET Web アプリケーションは、Windows 7 との互換性のために更新する必要があります。問題は、Excel ファイルをエクスポートする既存の機能では、Office 2007 と互換性のある Excel ファイルが生成されないことです。Office 2007 は、一般的なアプリケーションの新しい Windows 7 セットの一部です。
問題は次のコード行にあります。
ExportXLS.Telerik.WebControls.RadGrid RadGrid1 = new
ExportXLS.Telerik.WebControls.RadGrid();
RadGrid1.MasterTableView.ExportToExcel(TableName, true, false);
RadGrid.Net2 バージョン 4.5.0.0 という別の dll があることを発見しました。これには、バージョン 2.0 の dll では利用できない「ExportToExcel2007」メソッドが含まれています。この方法では、Excel 2007 で開くことができる有効な Excel ファイルが生成されます。
Telerik.WebControls.RadGrid RadGrid1 = new Telerik.WebControls.RadGrid();
RadGrid1.MasterTableView.ExportToExcel2007(TableName, true, false);
問題は、2 つの dll の間には大きな違いがあり、新しい dll を使用するように切り替えるのは簡単ではないように見えることです。私たちの意図した解決策は、アプリケーションで両方の dll を参照し、2007 互換の Excel ファイルの作成に問題がある画面でのみ新しい方を使用することでした。
以下の記事を参考にして、
http://blogs.msdn.com/b/ansonh/archive/2006/09/28/extern-alias-walkthrough.aspx
次の小さな変更を加えました。
Web プロジェクトに「RadGrid.Net2.dll」への参照を追加し、この参照のエイリアス プロパティを「 ExportXLS 」に調整しました。
これを ExportExcel.aspx.cs コード ビハインド ページの先頭に追加します。
extern エイリアスExportXLS ;
次に、radgrid.net2.dll の修飾参照を参照して、新しい dll を使用して radgrid をインスタンス化します。
ExportXLS .Telerik.WebControls.RadGrid RadGrid1 = 新しいExportXLS .Telerik.WebControls.RadGrid();
ExportToExcel メソッドを変更して、2007 の対応するメソッドを使用するようにしました。
RadGrid1.MasterTableView. ExportToExcel2007 (テーブル名、真、偽);
これにより、ExportExcel.aspx ページの問題が解決され、画面に Excel 2007 互換の Excel スプレッドシートが生成されるようになりましたが、この変更により、RadGrid を使用するアプリケーションの他のページが壊れてしまいました。これはエラーです:
c:\WINNT\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\7ff38b9a\2680aee3\App_Web_systemmapsearch.ascx.a97e7c59.tlmhafnf.0.cs(251): error CS0433:
The type 'Telerik.WebControls.GridRowIndicatorColumn'
exists in both
'c:\WINNT\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET
Files\root\7ff38b9a\2680aee3\assembly\dl3\cd8ec314\002177c0_d2e8cb01\RadGrid.DLL'
and
'c:\WINNT\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\7ff38b9a\2680aee3\assembly\dl3\428a2b2d\002177c0_d2e8cb01\RadGrid.Net2.DLL'
私の予想では、他の Web ページは RadGrid.dll の認定されていない古い 2.0.2.0 バージョンを引き続き使用し、引き続き機能すると予想していましたが、そうではありません。
読み込みに失敗したユーザー コントロール SystemMapSearch.ascx の分離コードからのコードの一部を次に示します。
<%@ Register TagPrefix="radG" Namespace="Telerik.WebControls" Assembly="RadGrid" %>
<radg:radgrid id="RadGrid1" cssclass="RadGrid" runat="server" allowpaging="True" allowsorting="True" gridlines="none"
pagesize="20" width="100%" borderwidth="0" AutoGenerateColumns="False">
NameSpace ディレクティブを変更してグローバル名前空間を含めようとしましたが、これにより無効な参照が発生します。
<%@ Register TagPrefix="radG" Namespace="global::Telerik.WebControls" Assembly="RadGrid" %>
ExportExcel.aspx ページを変更すると他のページが破損するのはなぜですか? また、この問題を解決するにはどうすればよいですか?