我们使用 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);
我们发现还有另一个 dll,RadGrid.Net2 版本 4.5.0.0,其中包含 2.0 版本的 dll 中不可用的“ExportToExcel2007”方法。此方法确实会生成可以使用 Excel 2007 打开的有效 Excel 文件。
Telerik.WebControls.RadGrid RadGrid1 = new Telerik.WebControls.RadGrid();
RadGrid1.MasterTableView.ExportToExcel2007(TableName, true, false);
问题是这两个 dll 之间似乎存在巨大差异,并且切换到使用新的 dll 看起来并不容易。我们预期的解决方案是在应用程序中引用这两个 dll,但仅在创建 2007 兼容 Excel 文件时出现问题的屏幕中使用较新的 dll。
使用以下文章作为指南,
http://blogs.msdn.com/b/ansonh/archive/2006/09/28/extern-alias-walkthrough.aspx
我们做了以下小改动:
在 web 项目中添加了对“RadGrid.Net2.dll”的引用,并将该引用的别名属性调整为“ ExportXLS ”
将此添加到 ExportExcel.aspx.cs 代码隐藏页面的顶部:
外部别名ExportXLS ;
然后,通过引用 radgrid.net2.dll 的限定引用,使用新的 dll 实例化一个 radgrid:
ExportXLS .Telerik.WebControls.RadGrid RadGrid1 = new 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'
我的期望是其他网页将继续使用不合格的旧 2.0.2.0 版本的 RadGrid.dll 并继续工作,但事实并非如此。
以下是用户控件 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 页面会破坏其他页面,我该怎么做才能解决此问题?