2012-08-05 43 views
0

我是一名新的ASP.NET開發人員,我正在嘗試開發一個名爲Useful Library的頁面,該頁面將包含許多內容,例如有用的演示文稿和pdf文檔。我在服務器中有一個名爲(有用資源)的文件夾,我將所有這些有用的演示文稿和文檔放在其中。我在我的數據庫中有以下表格:如何在GridView中使用HyperLinkField打開這些文檔?

UsefulResources Table: ID, Category, Title, URL, Uploaded Date, Hits 

設計此表的原因是組織資源。我現在想要能夠瀏覽或下載這些文件。 ***對於實施例中,我介紹稱爲(AP介紹),其具有: *** ID = 5和URL = AP Prsentation.pptx ******

我的ASP.NET代碼:

<asp:HyperLinkField DataNavigateUrlFields="ID,URL" 
           DataNavigateUrlFormatString="Useful Resources/URL={0}" 
           DataTextField="Title" HeaderText="Title" /> 

我有這部分的問題,我不知道如何解決它能夠打開或下載該演示文稿,所以該怎麼做?

併爲您的信息,稱爲(Library.aspx)我的頁面沒有任何代碼隱藏

UPDATE:

,我現在所擁有的該鏈接以下內容: PMVT/MSA/PSSP /有用%20Resources/ID = 5

順便說一句,這是一個基於網絡的Intranet應用程序,所以你將無法使用這個鏈接來訪問它。

而且我收到以下錯誤: enter image description here

更新#2: 這裏是我的ASP.NET代碼的SqlDataSource:

<asp:SqlDataSource ID="Sql_Reports" runat="server" 
         ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
         SelectCommand="SELECT [ID], [Title], [URL], [UploadedDate] FROM [UsefulResources] WHERE ([Category] = @Category) ORDER BY [UploadedDate] DESC"> 
         <SelectParameters> 
          <asp:ControlParameter ControlID="Label1" Name="Category" PropertyName="Text" 
           Type="String" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 
        <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
         CellPadding="4" DataSourceID="Sql_Reports" ForeColor="#333333" GridLines="None" 
         Width="100%"> 
         <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
         <RowStyle BackColor="#E3EAEB" /> 
         <Columns> 
          <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title"> 
           <ItemStyle HorizontalAlign="Center" Wrap="False" Width="100px" /> 
          </asp:BoundField> 
          <asp:HyperLinkField DataNavigateUrlFields="URL" 
           DataNavigateUrlFormatString="Useful Resources?URL={0}" 
           DataTextField="Title" HeaderText="Title" /> 
          <asp:BoundField DataField="UploadedDate" DataFormatString="{0:MMM yyy}" HeaderText="UploadedDate" 
           SortExpression="UploadedDate"> 
           <ItemStyle HorizontalAlign="Center" Wrap="False" Width="100px" /> 
          </asp:BoundField> 
         </Columns> 
         <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
         <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
         <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
         <EditRowStyle BackColor="#7C6F57" /> 
         <AlternatingRowStyle BackColor="White" /> 
        </asp:GridView> 

我仍然得到該鏈接爲pmvt/msa/pssp/Useful%20Resources /?URL = Electrical%20safety.ppt。我應該做些什麼來刪除該鏈接中的(?URL =)以便使鏈接正常工作。

更新#2:

這裏的腳本與它的數據的數據庫創建表:

/****** Object: Table [dbo].[UsefulResources] Script Date: 08/06/2012 07:08:15 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[UsefulResources](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [Category] [varchar](max) NULL, 
    [Title] [varchar](max) NULL, 
    [URL] [nvarchar](max) NULL, 
    [UploadedDate] [datetime] NULL, 
    [Hits] [int] NULL, 
CONSTRAINT [PK_UsefulResources] PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 
SET ANSI_PADDING OFF 
GO 
SET IDENTITY_INSERT [dbo].[UsefulResources] ON 
INSERT [dbo].[UsefulResources] ([ID], [Category], [Title], [URL], [UploadedDate], [Hits]) VALUES (1, N'PowerPoint Presentations', N'PMOD', N'Electrical safety.ppt', CAST(0x0000A0A000000000 AS DateTime), 1) 
INSERT [dbo].[UsefulResources] ([ID], [Category], [Title], [URL], [UploadedDate], [Hits]) VALUES (2, N'Word Documents', N'Fire Drill Evaluation', N'Fire Drill Evaluation.docx', CAST(0x0000A0A300000000 AS DateTime), 1) 
SET IDENTITY_INSERT [dbo].[UsefulResources] OFF 
+1

我不明白什麼是你的問題,你有什麼錯誤。 – Aristos 2012-08-05 06:47:08

+0

你能告訴URL中的值是什麼嗎? – 2012-08-05 07:03:00

+0

請參閱最新的問題。 – 2012-08-05 07:32:55

回答

0

一個404錯誤(因爲你可以看到),表示Web服務器無法找到鏈接應該指向的頁面。問題可能是url的Useful%20Resources/ID = 5部分。

通常,參數在URL末尾的問號之後以鍵=值對的形式傳遞,如下所示:有用的%20Resources?ID = 5。事實並非總是如此(特別是在MVC應用程序中),因爲您可以更改站點的路由數據以返回給定url上的任何頁面,但我建議您先驗證該位。一旦你擺脫了404錯誤,那麼看看你可能有的任何進一步的問題。

+0

我確信問題出在這個部分'Useful%20Resources?ID = 5'上。 **所以如何讓這個鏈接正確?**我正在使用ASP.NET Webforms。此外,我不知道如何使用該ID來獲取該部分URL中的鏈接。 – 2012-08-05 07:35:01

+0

我仍然得到這個鏈接:pmvt/msa/pssp/Useful%20Resources /?ID = 1。它應該轉換爲pmvt/msa/pssp/Useful%20Resources/AP Presentation.ppt – 2012-08-05 07:37:59

+0

不確定您是否理解格式字符串的概念。基本上{0}被替換爲一個變量......在你的情況下,它將被一個奇怪的url所取代......你需要找出ID = 1來自哪裏並編寫代碼,以便它被替換爲您希望爲用戶提供的文件的名稱。 – 2012-08-05 07:46:56

0

我認爲UsefulResources之間的空白會導致此錯誤。更正地址到源文件,然後再試一次:

<asp:HyperLinkField DataNavigateUrlFields="URL" 
           DataNavigateUrlFormatString="{0}" 
           DataTextField="Title" HeaderText="Title" /> 
+0

感謝您的幫助,但即使更改文件夾本身的名稱,我仍然收到相同的錯誤。 – 2012-08-06 04:03:26

+0

請試試這個並告訴我有關結果: 2012-08-06 14:13:02

+0

它不起作用。另外,我得到了以下鏈接:pmvt/msa/pssp/Useful_Resources/5 – 2012-08-07 05:16:08

0

我做一些目錄在Web項目中,如下: 文檔/白皮書/資源/ PDF ,並把一些文件存在,字。 doc,Excel.xls,PowerPoint.ppt。現在在網格視圖:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
CellPadding="4" DataSourceID="SqlDataSource1" 
ForeColor="#333333" GridLines="None" 
Width="99%"> 
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
<RowStyle BackColor="#E3EAEB" /> 
<Columns> 
<asp:BoundField DataField="Category" HeaderText="Category" SortExpression="Title"> 
<ItemStyle HorizontalAlign="Center" Wrap="False" Width="100px" /> 
</asp:BoundField> 
<asp:HyperLinkField DataNavigateUrlFields="Url" 
DataNavigateUrlFormatString="{0}" 
DataTextField="Category" HeaderText="Category" /> 
</Columns> 
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
<EditRowStyle BackColor="#7C6F57" /> 
<AlternatingRowStyle BackColor="White" /> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [UsefulResources]"></asp:SqlDataSource> 

在這個網格視圖點,每個文件並點擊該鏈接,開始下載目標文件。在數據庫 地址字段是這樣的: 〜/文檔/白皮書/資源/ PDF /檢驗.pdf

相關問題