参考我的这些问题,
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
但我的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
答案 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