如何在GridView中使用HyperLinkField打开此文档?

时间:2012-08-05 06:38:13

标签: c# asp.net

我是一名新的ASP.NET开发人员,我正在尝试开发一个名为Useful Library的页面,其中包含许多内容,例如有用的演示文稿和pdf文档。我在服务器中有一个名为(有用的资源)的文件夹,我将所有这些有用的演示文稿和文档放入其中。我的数据库中有以下表格:

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

设计此表的原因是组织资源。我现在想要能够浏览或下载这些文件。 ***例如,我有一个名为(AP Presentation)的演示文稿: *** ID = 5,URL = AP Prsentation.pptx ******

我的ASP.NET代码:

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

我对此部分有疑问,我不知道如何修复它以便能够打开或下载此演示文稿,那么该怎么做?

为了您的信息,名为(Library.aspx)的页面,我没有任何代码隐藏

更新

我现在的链接如下: PMVT / MSA / PSSP /有用%20Resources / ID = 5

顺便说一句,这是一个基于Web的Intranet应用程序,因此您将无法使用此链接访问它。

我收到以下错误: enter image description here

更新#2: 这是我使用SqlDataSource的ASP.NET代码:

<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 /有用的%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

3 个答案:

答案 0 :(得分:0)

404错误(如您所见)表示Web服务器无法找到链接应指向的页面。问题可能是网址的有用%20Resources / ID = 5部分。

通常,参数在url末尾的问号之后作为键=值对传递,如此有用的%20Resources?ID = 5。情况并非总是如此(特别是在MVC应用程序中),因为您可以更改站点的路由数据以返回给定URL的几乎任何页面,但我建议您先验证该位。一旦你摆脱了404错误,那么看看你可能遇到的任何其他问题。

答案 1 :(得分:0)

我认为UsefulResources之间的空格会导致此错误。更正源文件的地址,然后重试:

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

答案 2 :(得分:0)

我在web项目中创建了一些目录,如下所示: 的文档/白皮书/资源/ PDF 并在那里放一些文件, Word.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>

此网格视图中的链接指向每个文件,然后单击,开始下载目标文件。 数据库中的Url字段如下: 的 〜/文档/白皮书/资源/ PDF /检验.pdf