今天,需要在ReportViewer报表上链接到别一个页面上。
于是给TextBox加上一个Action,并在Action内指定HyperLink,结果发现,如果指定给HyperLink的不是绝对URL,它就不起作用。但开发的时候不可能就指出绝对的URL。而要取得客户端访问的绝对的URL也不是一样容易的事:-),经过测试,发现只有Request.Url提供此信息。于是可以采用下方法来指定绝对URL。1. 在Report上增加报表参数Current_Virtual_Path。2. 写ReportViewer的Load事件:代码如下: 1 string req_url = this .Request.Url.ToString(); 2 3 int pos = req_url.LastIndexOf( ' / ' ); 4 5 if (pos > 0 ) 6 { 7 string current_virtual_path = req_url.Substring( 0 , pos + 1 ); 8 ReportViewer1.LocalReport.SetParameters( new ReportParameter[] { 9 new ReportParameter( " current_virtual_path " , current_virtual_path) }); 10 }
也就是在报表Load的时候把该URL的目录信息作为报表参数传递给Reportviewer。 3. 指定HyperLink的标签的内容为: = Parameters ! current_virtual_path.Value + " 文件.aspx "
4. 修改ReportViewer.LocalReport.EnableHyperLinks 为true。 至此搞定。