c# - 将变量读入 GridView asp.net 4 c# 中 TemplateField 中的 NavigateUrl

标签 c# asp.net gridview templatefield navigateurl

我是编程新手。我创建了一个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/

相关文章:

c# - 如何使用 NUnit 和 ReSharper 忽略整个单元测试项目

c# - 获取 View 中的当前用户的 ASP.NET 标识

c# - 在不触发 ValueChanged 的​​情况下设置 RadDatePicker 日期

android - 在 gridview 中拖动项目

java - 显示特定目录中的所有图像

c# - C# 中代码隐藏的 CryptoJS.SHA3?

c# - get_SynonymInfo 某些词抛出内存不足异常

javascript - 将 C# 正则表达式转换为 JavaScript 正则表达式

c# - 使用 ASP.net 将 Highcharts 连接到数据库