设置gridview列以包含链接,其中绑定数据是URL列表

时间:2013-03-12 13:25:57

标签: asp.net

我有一个从数据库中检索的对象,其中一个字段是URL。我在gridview中显示这些数据,我希望URL列是一系列链接,说“下载”,它指向相应的URL。

我目前有以下内容:

<asp:GridView ID="my_gv" runat="server" AutoGenerateColumns = "false" 
            GridLines="None" Width="100%" AllowSorting="True" 
            CssClass="table table-bordered table-condensed">
            <AlternatingRowStyle BackColor="#F5F5F5" />
            <Columns>
                <asp:HyperLinkField  DataNavigateUrlFields = "location" Text = "Download link" HeaderText = "Download"  />
            </Columns>    
        </asp:GridView>

这似乎不起作用。条目是蓝色的,就像链接一样,但是用鼠标悬停实际上并不会调用URL(光标不会更改为“链接”光标)。查看生成的HTML,它们是<a>标记,但它们不包含href attrivute。为什么?我错过了什么让这个工作?我填写以下内容:

        private void populateElementView()
        {
            List<MyElement> elements = database.getGeneratedElements();
            // elements has a .location property
            my_gv.DataSource = elements;
            my_gv.DataBind();

        }

有关详细信息,URL指向计算机上的文件。手动插入带有“测试”网址的项目实际上是有效的,而实际的文件路径却没有。

2 个答案:

答案 0 :(得分:1)

试试这可能会对你有所帮助。我在这里使用DataNavigateUrlFormatString Property用于

Gets or sets the string that specifies the format in which the URLs for the hyperlinks in a HyperLinkField object are rendered.

<asp:HyperLinkField  DataNavigateUrlFields = "location" Text = "Download link" HeaderText = "Download" DataNavigateUrlFormatString="{0}" />

编辑:

您可以将文件放在服务器位置,而您的位置字段将具有这样的虚拟路径MusicFiles/File1.avi

现在,您可以将HyperLinkField中的网址格式设置为http://localhost//Download/{0},其中{0}表示MusicFiles / File1.avi或location字段值

<asp:HyperLinkField  DataNavigateUrlFields = "location" Text = "Download link" HeaderText = "Download" DataNavigateUrlFormatString="http://localhost//Download/{0}" />

我认为这将在您部署它时帮助您,用户可以从您的服务器下载文件。

答案 1 :(得分:0)

尝试这种方式:

<asp:HyperLink ID="HyperLink1" Text="Download link" NavigateUrl='<%# Eval("location")%>' runat="server"></asp:HyperLink>

或者如果您使用其他控件,只需将值绑定到NavigateUrl:

<%# Eval("location")%>