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

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

我有一个动态的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(); } } 

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

除了我在想的“动态网格视图”这个术语之外,你可能意味着什么,但是如果你需要在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); } }