href未在GridView中显示为HyperLink

时间:2013-04-26 10:28:49

标签: c# webforms

参考我的这些问题,

How to create a HyperLink field out of SQL query

GridView Table 1 related to Table 2

如果我运行此SQL查询,那么我会得到类似的内容,

SELECT CrateTitle,CrateDescription,CrateID,
stuff(
(
    SELECT ',<a href=''' + [FruitWebsite] + ''' target=''_blank''>'+ [FruitTitle] +'</a>' FROM fruits WHERE CrateID = t.CrateID FOR XML path('')
),1,1,' ') Types_of_Fruits_in_Crate
FROM (SELECT DISTINCT CrateTitle,CrateDescription,CrateID FROM fruits )t

enter image description here

但我的GridView没有显示我想要的内容,我想要一个 HyperLink ,而我的gridview没有将此<a href='www.mango1.com' target='_blank'>Mango 1</a>作为HyperLink。

现在,如果我试试这个,

SELECT ',<asp:HyperLink ID='sadasdasdas' + [FruitWebsite] + ''' target=''_blank''>'+ [FruitTitle] +'</a>' FROM fruits WHERE CrateID = t.CrateID FOR XML path('')
),1,1,' ') Types_of_Fruits_in_Crate
FROM (SELECT DISTINCT CrateTitle,CrateDescription,CrateID FROM fruits )t

然后我开始收到错误,因为语法不正确。

如果需要,请尝试小提琴http://www.sqlfiddle.com/#!3/96a49/18

2 个答案:

答案 0 :(得分:2)

为什么要更改SQL以完整输出超链接?

当然你应该使用GridView控件来执行HyperLinkColumn,所以SQL:

SELECT CrateTitle,CrateDescription,CrateID,FruitWebsite,FruitTitle
FROM fruits
-- WHERE CrateID = ? -- add criteria if needed

然后是GridView:

<asp:GridView id="grd" runat="server">
    <columns>
     <asp:hyperlinkfield datatextfield="FruitTitle"
        datanavigateurlfields="FruitWebsite"
        datanavigateurlformatstring="{0}"          
        headertext="Linky link"
        target="_blank" />
    </columns>
</asp:GridView>

修改


如果你想要代码隐藏,你可以动态添加它:

HyperLinkField hlf = new HyperLinkField();
hlf.datatextfield = "FruitsTitle"; // Or a string variable
hlf.datanavigateurlfields="FruitWebsite"; // Or a string variable
hlf.datanavigateurlformatstring="{0}"; // Or a string variable          
hlf.headertext="Linky link"; // Or a string variable
hlf.target = "_blank";

GrdiView grd = new GrdiView();

grd.columns.add(hlf);

这一切都是我的头脑,因为我面前没有IDE,所以一些语法可能已经出来或需要大写等等......但是这个概念是你可以在代码隐藏中定义一个列,将它添加到GridView中,无论是在代码隐藏中还是在页面上定义,然后绑定数据就可以了!

答案 1 :(得分:1)

虽然@RemarkLima向您展示了更好的解决方案,但您可以通过设置默认为HtmlEncode="False"的{​​{1}}来在GridView中呈现HTML

True