在DataGridView的RowDataBind事件里控制HyperLinkField列
左直拳
DataGridView里有一种列是HyperLinkField类型:
<asp:HyperLinkField DataTextField="Title" SortExpression="Title" DataNavigateUrlFields="Id" DataNavigateUrlFormatString="http://www.fuckman.com/fuck.aspx?Id={0}" HeaderText="标题" Target="_blank" />
其实就是一种超链接。
如果想控制DataGridView里一些样式,可以在页面里面写<%# Eval() %>之类,也可以在代码里用DataGridView的RowDataBind事件控制。
可是在代码里控制这个HyperLinkField 却遇到了麻烦。
首先要把这一列找出来,找出来之后不能强行转换成HyperLinkField,这样编译会出错,要转换成HyperLink。奇怪吧。
protected void gvWebSite_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView gv = (DataRowView)e.Row.DataItem;
((HyperLink)e.Row.Cells[1].Controls[0]).ForeColor = System.Drawing.Color.Red;
}
}