【问题标题】:How to add a Hyperlink to a dynamic gridview column如何将超链接添加到动态 gridview 列
【发布时间】:2009-11-30 11:58:06
【问题描述】:

我有一个问题希望有人能提供帮助。

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

我通过使用动态模板字段进行了尝试。但即使在绑定数据时,我也无法获取该列的超链接。我可以获取数据,但不能获取超链接。

这是实现ITemplateHyperLinkTemplate 类。

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();
    }
} 

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我不完全确定我理解您要完成的工作,但我认为您不应该为此构建自己的模板类。

    您可能指的不是我所想的“动态网格视图”一词,但是如果您需要为 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 ,宽度=650,高度=500");另一个选择是使用 Microsoft 的 Ajax Control Toolkit,它包括一些不错的弹出功能。我的经验表明,如果您保持简单,则使用起来不会太难。
    • 我有 .csv 文件可以在点击超链接时打开...你能帮我解决这个问题吗?谢谢。
    • @shruti 首先决定客户端/浏览器如何访问服务器上的 .csv 文件(即客户端将使用什么 URL 来访问文件)。 .csv 是静态文件吗?如果是这样,您可以考虑将实际的 .csv 文件放在您的网站中,然后将指向它的适当 URL 分配为超链接的目标 URL。 .csv 文件是服务器动态生成的吗?您可以使用自定义 ASP.NET 处理程序将 .csv 内容直接写入响应流。在网站上搜索类似的问题,但如果没有任何帮助,您可以将其作为一个新问题提出。
    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多