C# 如何将超链接添加到动态gridview列

C# 如何将超链接添加到动态gridview列,c#,asp.net,C#,Asp.net,我有个问题,希望有人能帮忙 我有一个动态的Gridview。我需要在gridview列上有一个超链接。这些超链接应打开一个弹出窗口,在单击时显示某些数据 我通过使用动态模板字段尝试了这一点。但即使绑定数据,我也无法获得该列的超链接。我能得到数据,但不能得到超链接 这是实现ITemplate的HyperLinkTemplate类 public class HyperLinkTemplate : ITemplate { private string m_ColumnName; pub

我有个问题,希望有人能帮忙

我有一个动态的
Gridview
。我需要在gridview列上有一个超链接。这些超链接应打开一个弹出窗口,在单击时显示某些数据

我通过使用动态模板字段尝试了这一点。但即使绑定数据,我也无法获得该列的超链接。我能得到数据,但不能得到超链接

这是实现
ITemplate
HyperLinkTemplate

public class HyperLinkTemplate : ITemplate
{
    private string m_ColumnName;
    public string ColumnName
    {
        get { return m_ColumnName; }
        set { m_ColumnName = value; }
    }

    public HyperLinkTemplate()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    public HyperLinkTemplate(string ColumnName)
    {
        this.ColumnName = ColumnName;

    }

    public void InstantiateIn(System.Web.UI.Control ThisColumn)
    {
        HyperLink HyperLinkItem = new HyperLink();
        HyperLinkItem.ID = "hl" + ColumnName;
        HyperLinkItem.DataBinding += HyperLinkItem_DataBinding;
        ThisColumn.Controls.Add(HyperLinkItem);

    }

    private void HyperLinkItem_DataBinding(object sender, EventArgs e)
    {
        HyperLink HyperLinkItem = (HyperLink)sender;
        GridViewRow CurrentRow = (GridViewRow)HyperLinkItem.NamingContainer;
        object CurrentDataItem = DataBinder.Eval(CurrentRow.DataItem, ColumnName);
        HyperLinkItem.Text = CurrentDataItem.ToString();
    }
} 

我不完全确定我是否理解您试图实现的目标,但我认为您不应该为此构建自己的模板类

您的意思可能与我所想的术语“dynamic gridview”不同,但如果您需要向gridview中列的每一行添加超链接,并且如果您需要在代码隐藏中这样做,那么我建议您处理gridview的RowDataBound事件,并在事件处理程序中执行以下操作:

    protected void grdData_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink link = new HyperLink();
            link.Text = "This is a link!";
            link.NavigateUrl = "Navigate somewhere based on data: " + e.Row.DataItem;
            e.Row.Cells[ColumnIndex.Column1].Controls.Add(link);
        }
    }

太好了,我能像你说的那样创建超链接。但现在我需要有一个点击超链接弹出窗口。需要将一个参数传递到弹出屏幕。你知道吗?很抱歉反应太晚了。有几种方法可以做到这一点。我认为最简单的方法是使用javascript创建另一个窗口。您可以创建这样一个javascript函数,并在查询字符串中传递带有参数的url:function createWindow(url){var newWindow=window.open(url,“newWindow”,“toolbar=yes,scrollbars=yes,width=650,height=500”);}另一个选项是使用Microsoft的Ajax控件工具包,其中包括一些不错的弹出功能。我的经验表明,如果你保持简单,使用它并不太困难。我有.csv文件可以在超链接单击时打开…你能帮我解决这个问题吗?谢谢。@shruti首先决定客户端/浏览器如何访问服务器上的.csv文件(即客户端将使用什么URL访问该文件)。.csv文件是静态文件吗?如果是这样,你可以考虑把实际的.CSV文件放在你的网站里面,然后指派适当的URL指向它作为你的超链接的目标URL。.csv文件是否由服务器动态生成?您可以使用自定义ASP.NET处理程序将.csv内容直接写入响应流。在网站上搜索类似的问题,但如果没有任何帮助,你可以将其作为新问题提问。