【问题标题】:How to link a PDF Document to a Record using Visual Studio LightSwitch 2011?如何使用 Visual Studio LightSwitch 2011 将 PDF 文档链接到记录?
【发布时间】:2011-09-20 15:12:14
【问题描述】:

我遇到以下问题:如何使用 Visual Studio LightSwitch 2011 和 Visual Basic 将 PDF 文档链接到数据网格中的记录?

任何帮助都会很棒,谢谢!

【问题讨论】:

  • 我建议您让您的问题更具体 - 我们需要知道您所说的“链接”是什么意思。如果您的某个字段中有 PDF 的 URI 或路径,则可以称为链接,但我感觉您想要的不止这些。您希望用户在网格中单击即可打开文件吗?您希望能够浏览到该文件吗?如果您能准确地告诉我们您想要什么,那么可能有办法实现它。
  • 我希望链接指向服务器上的一个位置,这样如果用户单击该链接,它将打开 PDF。我可以只突出显示产品行,然后使用按钮上的单击事件打开 PDF,这真是太棒了。还有多种产品大多具有不同的 pdf,所以我需要每个链接都特定于产品。
  • 我希望将所有内容都连接到 MySql 数据库,以存储新的和修订的记录。这样做的目的是将其用作数据输入工具,用户可以在其中添加产品的所有信息,然后将产品 pdf 链接到它以便于访问。

标签: vb.net silverlight pdf datagrid visual-studio-lightswitch


【解决方案1】:

这是执行此操作的最简单方法:将自定义命令添加到数据网格行的命令栏以用于您的数据网格。在这个例子中,我调用了 Open PDF File 命令。然后将此代码添加到命令的执行代码中:

partial void OpenPDFFile_Execute()
{
    const string LOCAL_SERVER_PDF_DIR = @"\\MyServer\PDFs\";
    const string WEB_SERVER_PDF_DIR = "http://myweb.server/PDFs/";
    const string PDF_SUFFIX = ".pdf"; //assumes you do not include the extension in the db field value

    if (AutomationFactory.IsAvailable)
    {
        //if the AutomationFactory is available, this is a desktop deployment
        //use the shell to open a PDF file from the local network
        dynamic shell = AutomationFactory.CreateObject("Shell.Application");

        string filePath = LOCAL_SERVER_PDF_DIR + this.PDFFiles.SelectedItem.FileName + PDF_SUFFIX;
        shell.ShellExecute(filePath);
    }
    else
    {
        //otherwise this must be a web deployment
        //in order to make this work you must add a reference to System.Windows.Browser
        //to the Client project of your LS solution
        var uri = new Uri(WEB_SERVER_PDF_DIR + this.PDFFiles.SelectedItem.FileName + PDF_SUFFIX);
        HtmlPage.Window.Navigate(uri, "_blank");
    }

}

您需要将以下导入添加到用户代码文件的顶部以使此代码编译:

using System.Runtime.InteropServices.Automation;
using System.Windows.Browser;

我应该提到,您需要一个目录来提供 PDF 文件。此示例在部署方面很灵活,因为它同时处理桌面和 Web 配置。由于您需要设置 PDF 目录,您可能只想处理一个简单的配置选项(或者您可以通过 http 和本地网络共享公开相同的 PDF 目录)。

您可能还希望将其显示为真正的链接而不是按钮。为此,您需要一个自定义 SilverLight 控件。无论如何,我建议首先使用按钮来实现 PDF 链接。然后,您可以将相同的代码作为单独的项目移动到链接事件处理程序中,如果这值得花时间的话。

【讨论】:

  • 哇!谢谢保罗!感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2014-07-13
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
相关资源
最近更新 更多