【发布时间】:2016-12-01 17:47:32
【问题描述】:
我是 RDLC 报告的新手。
RDLC 报告详情:
我有一个名为“CustomReport.rdlc”的 RDLC 报告。哪个集成到 MVC 应用程序中?考虑一下,此报告参数是姓名、id、薪水和联系方式。每个列都与文本框绑定。我当前的要求是,我从数据库中获取了每个客户的地址并将其存储为“位置”参数。当绑定值到“位置”时,它被存储为“字符串”。
我的要求:
如果用户单击“联系人详细信息”列值,则应打开新窗口,该窗口会下载此人的位置。外汇:谷歌地图服务。
我的实现:
在我们的代码中,我实现了以下代码来为我的报表查看器启用超链接属性。
if (reportPath.Contains("CustomerReport.rdlc"))
{
viewer.LocalReport.EnableHyperlinks = true;
viewer.HyperlinkTarget = "_blank";
}
我已将转到 URL 属性值指定为“[位置]”。因为我直接从数据库中获取了 URL。例如Sample Link for the Location。呈现 RDLC 报告后,如果单击“联系人详细信息行值”中的任何一个,链接的 URL 在“相同”页面中打开。这就是问题
我的期望是:
如果我单击行值,则链接的页面或文档应在新页面中打开。
我已经尝试了下面的文本框表达式,以便在新窗口中打开超链接 URL
尝试 1:
1. "javascript:void(window.open('https:\\www.google.com','_blank'))"
2. Fields!location.Value ? rs:Command=Render &rc:LinkTarget=_blank
3. "'" & Fields!location.Value & "'"
4. " ' "+" ' "+Fields!location.Value + " ' "+" ' "
5. char(34) & Fields!location.Value & char(34)
6. '<a href="'+[location]+'" target="_blank"></a>'
尝试 2:
我在控制器上写了一个 ActionResult。这意味着我已将以下 URL 分配给 RDLC 参数位置 ["https://localhost:56743/BaseController/DownloadFile?location=[location]"] 一旦用户点击联系人行,相关的控制器操作方法将被调用。我已将响应写回如下代码:
public ActionResult DownloadFile(string fileName, string filePath)
{
string docName = string.Empty;
string path = string.Empty;
string download = string.Empty;
docName = fileName.Length > 0 ? fileName : null;
path = filePath.Length > 0 ? filePath : null;
string fileContentType = System.Web.MimeMapping.GetMimeMapping(docName);
var absolutePath = Server.MapPath("~" + path);
if (!System.IO.File.Exists(absolutePath)) return RedirectToAction("FileNotFound", "HomeManagement");
if (!string.IsNullOrEmpty(path))
{
download = download + "<script>";
download = download + "window.open('" + HttpContext.Request.Url.GetLeftPart(UriPartial.Authority) + "/" + path + "')";
download = download + "</script>";
}
return Content(download);
}
在控制器动作调用之后, 按照我的期望,链接的文档会在新窗口中打开。但是 RDLC 文档被重定向到在预览中显示为空的“超链接 URL”
尝试 3:
我在 RDLC 报告属性的“代码”选项卡中编写了 Visual Basic 中的自定义代码。并在 ContactDetails 属性的 “转到 URL” 文本框中调用该代码。
RDLC 自定义代码:
Module OpenDocument
public function GetUrl(byVal FilePath as string) as string
return ("'"+FilePath+"'")
End function
End Module
在“转到 URL”中调用该自定义代码:
=Code.OpenDocument.GetUrl([Fields!location.Value])
但上述尝试不起作用。
预期:
“单击列值后,应下载超链接文档还是在新窗口中打开链接文档?”
谁能给我一个更好的解决方案来解决这个问题?
【问题讨论】:
-
您正在创建 serviceHub,但随后您启动了集线器。服务器端的 serviceHub 也会调用客户端的
addMessage,但客户端只有broadcastMessage的处理程序。 -
我不需要从客户端向服务器发送任何数据。这就是为什么我只是临时创建了 $.connection.hub.start().function(){}); .我只需要使用信号器来接收。我应该从客户端中删除 $.connection.hub.start() 函数。删除集线器启动后它仅适用于从服务器接收数据吗?
-
大家好!我无法在堆栈溢出中提出新问题。所以,我修改了现有的问题。
-
这不是 VBA,Visual Basic 代码看起来像 VB.Net,请修改标记。