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

Avi*_*Avi 3 c# asp.net

我有一个问题希望有人可以提供帮助.

我有一个动态Gridview.我需要有一个hyperlinkgridview列.这些超链接应打开一个弹出窗口,以便在点击时显示某些数据.

我通过动态模板字段尝试了这个.但即使在绑定数据时,我也无法获得该列的超链接.我能够获取数据而不是超链接.

这是HyperLinkTemplate正在实施的类ITemplate.

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();
    }
} 
Run Code Online (Sandbox Code Playgroud)

Dr.*_*ice 9

我不完全确定我理解你要完成的任务,但我认为你不应该为此建立自己的模板类.

除了我在想的"动态网格视图"这个术语之外,你可能会想到一些其他的东西,但如果你需要在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);
        }
    }
Run Code Online (Sandbox Code Playgroud)