SQL からの情報の行を一覧表示するグリッドビューがあります。後期列が 1 に設定されている場合、行のテキストが赤で表示されます。これは機能しますが、ハイパーリンク テキストは赤で表示されません。そのため、a) ハイパーリンク要素の前色を変更するか、b) 要素にクラスを適用しようとしています。ハイパーリンクを取得しようとしても取得できません。ラベルを取得すると、うまくいくようです。
ASP
<asp:TemplateField HeaderText="Project">
<ItemTemplate>
<a id="hlProject" href="VpnDetails.aspx?Project=<%# Eval("id") %>"><%# Eval("project") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Update">
<ItemTemplate>
<asp:Label ID="lblLastUpdate" runat="server" Text='<%#Eval("diff") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
C#
protected void gvLastIp_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Adds the tooltip to the last update label
Label lblLastUpdate = e.Row.FindControl("lblLastUpdate") as Label;
DateTime activeSince = Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "begindate"));
DateTime lastupdate = Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "lastupdate"));
lblLastUpdate.ToolTip = "Active Since " + activeSince.ToString("MMMM d yyyy HH:mm") + " - Last Update " + lastupdate.ToString("MMMM d yyyy HH:mm");
if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "late")) == "1")
{//if the row is late it should be red
e.Row.Font.Bold = true;
e.Row.ForeColor = System.Drawing.Color.Red;
HyperLink hlProject = new HyperLink();
try
{
hlProject = (HyperLink)e.Row.FindControl("hlProject");
hlProject.Attributes.Add("class", "late");
hlProject.ForeColor = System.Drawing.Color.Red;
}
catch (Exception e1)
{
lblError.Text = e1.Message;
}
}
}
したがって、ハイパーリンクではなくラベルで機能する理由を知る必要があります。ハイパーリンクの解決策も必要です。