问题几乎说明了一切。在我的aspx页面上我有一个GridView,在Columns下我有一堆BoundFields,其中一个是TemplateField
<asp:TemplateField HeaderText = "Status">
<ItemTemplate>
<asp:HyperLink ID = "HyperLink1" runat = "server" Target = "_blank"
NavigateUrl = '<%# Eval("URL") %>'
Text = '<%#Eval("Status") %>'>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
现在,我希望此超链接映射到不同的图像,具体取决于评估文本的内容。例如,“成功”会显示一个很大的笑脸,“失败”会显示一个皱眉脸,等等。我怎样才能做到这一点?
感谢您的光临。
答案 0 :(得分:2)
您可以将图像放在超链接中,例如
<img src='/images/status/<%#Eval("Status") %>.jpg' />
并按名称为每个状态创建不同的图像。否则你可能不得不在DataBind事件上做点什么。
答案 1 :(得分:1)
试试这个
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink HyperLink1 = e.Row.FindControl("HyperLink1");
if(SomeText == "Success")
HyperLink1.NavigateUrl = "Url to Smiley";
else
HyperLink1.NavigateUrl = "Url to Frowney";
}
}
答案 2 :(得分:0)
如果您尝试设置ImageUrl属性,我建议使用RowDataBound
事件。处理程序方法可能类似于:
protected void questionsGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
DataSourceDataType row;
HyperLink hyperLink1;
if (e.Row.RowType == DataControlRowType.DataRow & e.Row.DataItem is DataSourceDataType)
{
row = (DataSourceDataType)e.Row.DataItem;
hyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");
hyperLink1.ImageUrl = (row.IsSuccess) ? "~/images/success.png" : "~/images/failure.png";
}
}
我使用的另一个技巧是改变你绑定的数据对象,以获得一个指示要使用的URL的属性:
partial class DataSourceDataType
{
public string SuccessImgURL
{
get
{
return (IsSuccess) ? "~/images/success.png" : "~/images/failure.png";
}
}
}
然后绑定到该属性。
注意:IsSuccess
需要替换为您自己的字段名称或布尔条件
我经常将它与LINQ to SQL对象一起使用,因此可以使用分部类在单独的文件中添加属性。这样您就不必担心删除添加内容的LINQ to SQL工具了。