2011-09-20 44 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

相關問題