我是编程新手。我创建了一个GridView并使用SqlDataSource进行绑定(bind)。网格显示来自 SQL Server 数据库的多个变量,包括超文本链接。
对于特定领域,我需要: - 评估数据库字段“Journal_title” - 将其作为较长字符串的一部分插入到 TemplateField.NavigateUrl 中 - 如果另一个字段(“Indexed_NIH”)为 NULL,则隐藏链接
该字符串的语法是正确的,如果我插入单个标题,则该语法可以工作,但我需要从数据库中读取所有标题并将它们插入到 URL 中。
我当前的代码成功在适当的记录中显示链接文本(即当“Indexed_NIH!= NULL”时),但 NavigateUrl 未正确显示。
欢迎提出任何建议 - 请记住我是新手!
<asp:TemplateField HeaderText="PubMed">
<ItemTemplate>
<asp:HyperLink ID="lnkPubMed" runat="server" Text="S" Target="_blank" NavigateUrl='http://www.ncbi.nlm.nih.gov/pubmed?term="<%# Eval("Journal_title") %>"[Journal]) AND ("last 3 years" [PDat])"' Visible='<%# Convert.ToString(Eval("Indexed_NIH")) == "True" ? true : false %>' >
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
代码隐藏中没有任何内容。
最佳答案
好的方法是利用网格控件的RowDataBound
事件并将链接分配给超链接按钮
protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
object[] dataitems = ((DataRowView)e.Row.DataItem).Row.ItemArray;
HyperLink hl = (HyperLink)e.Row.FindControl(ControlName);
if(hl!=null)
{
//write code to assing value to link
}
}
}
关于c# - 将变量读入 GridView asp.net 4 c# 中 TemplateField 中的 NavigateUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11455441/