日期:2014-05-18  浏览次数:20353 次

XtraReport.ShowPerview()报"The method or operation is not supported"的错误
我的DXperience工具是11.1.8的,已经破解了,我是用Winform的Report Designer设计的repx文件,我用的开发工具是VS2010,然后在Asp.Net的页面后台加载这个文件,用XtraReport控件显示报表,但是每当程序运行到XtraReport的ShowPerview方法时都会报"The method or operation is not supported"的错误,刚开始遇到这个错误时,我以为是我少添加了引用,我就根据Devexpress的帮助文档http://documentation.devexpress.com/#XtraReports/CustomDocument9367添加了这些引用,但是任然报这个错;于是我就在其他本版的DXperience(10.1.5)环境下做测试,也是报这个错。下面是我用VS2010写的一个demo:

HTML code

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default1.aspx.cs" Inherits="Web.Default1" %>

<%@ Register Assembly="DevExpress.XtraReports.v11.1.Web, Version=11.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
    Namespace="DevExpress.XtraReports.Web" TagPrefix="dx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <dx:ReportViewer ID="rvDemo" runat="server" onload="rvDemo_Load"></dx:ReportViewer>
    </div>
    </form>
</body>
</html>



C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.XtraReports.UI;

namespace Web
{
    public partial class Default1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        protected void rvDemo_Load(object sender, EventArgs e)
        {
            XtraReport xr = new XtraReport();
            xr.LoadLayout(@"C:\Users\Default\Desktop\DXexpress Demo\DXexpress\Web\File\Report1.repx");
            xr.ShowPreview();
        }
    }
}



此问题本人纠结了很久,找过很多文档资料,始终没有解决,但求高人指点,谢谢。

------解决方案--------------------
我只在winform下用过这套工具,具体的记不清楚了。showpreview这个函数到底能在web下使用吗?还有这个函数在load的时候能用吗?建议你放在其他地方调用试试。之前在winform下我也有遇过某个方法要在窗口完全载入完之后才能有效的情况。
------解决方案--------------------
探讨
回1楼的话,我页面的加载事件里面也试过这样做,效果是一样的,所以我才有了上面的这个Demo
对于Devexpress我还是个新手,很多东西需要多学习,我的这条思路是应需求而产生的,是否可以在Web里面实现我也不知道,而在winform里面这样做事完全可行的,除非在web里面不是用这个方法显示报表

------解决方案--------------------
据我之前用这套控件的经验,你这个函数基本不可能winform和webform通用。这个预览是要弹出一个由DevExpress控制的窗口的,当然我用的时候是Winform。而你的环境是webform,怎么可能在网页上弹出一个winform来。建议你不要局限于XtraReport,我记得DevExpress有另外一套asp.net的控件的,可能在那里有其他的用法(后来还有WPF、SL等的,我有注册他们官网,一直有推送的)。