2

关于我的这些问题,

如何从 SQL 查询中创建超链接字段

GridView 表 1 相关表 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

在此处输入图像描述

但是我的 GridView 没有显示我想要的,我想要一个超链接,而我的 gridview 没有把它<a href='www.mango1.com' target='_blank'>Mango 1</a>当作超链接。

现在如果我试试这个,

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

4

2 回答 2

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,在代码隐藏或页面上定义,然后绑定数据,你就走了!

于 2013-04-26T10:41:09.127 回答
1

虽然@RemarkLima 向您展示了一个更好的解决方案,但您可以通过默认设置在 GridView 中HtmlEncode="False"呈现TrueHTML

<asp:BoundField DataField="Name" HeaderText="Name" HtmlEncode="false" />
于 2013-04-26T11:02:56.090 回答