2011-09-20 53 views
0

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

任何帮助将是真棒,谢谢!

+1

我建议你让你的问题更具体 - 我们需要知道你的意思是“链接”。如果您在某个字段中具有指向PDF的URI或路径,则可以将其称为链接,但我有一种感觉,您希望获得更多的信息。您是否希望用户在网格中单击一下即可打开文件?你想浏览文件吗?如果你可以确切地告诉我们你想要什么,那么可能有办法做到这一点。 –

+0

我想要链接指向服务器上的某个位置,以便如果用户点击链接,它将打开PDF。这真的很棒,我可以突出显示产品的一行,然后使用按钮上的单击事件打开PDF。也有多个产品大多使用不同的pdf,所以我需要每个链接都是特定于产品的。 – MDLcode

+0

我想把所有的东西都连接到MySql数据库,以保存新的和修改过的记录。这样做的目的是将其用作数据输入工具,用户可以添加产品的所有信息,然后将该产品的pdf链接到该产品以便于访问。 – MDLcode

回答

1

下面是最简单的方法:将自定义命令添加到数据网格的数据网格行的命令栏中。在这个例子中,我打电话命令打开PDF文件。然后添加以下代码为命令执行代码:

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 directoy,因此您可能只想简单地处理一个配置选项(或者您可以通过http和本地网络共享公开相同的PDF目录)。

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

+0

哇!谢谢保罗!我感谢您的帮助。 – MDLcode

相关问题