我有一个问题希望有人能提供帮助。
我有一个动态的 Gridview
。我需要在 gridview 列上有一个 hyperlink
。这些超链接应打开一个弹出窗口以在点击时显示某些数据。
我通过动态模板字段尝试了这一点。但即使在绑定(bind)数据时,我也无法获得该列的超链接。我能够获取数据但不能获取超链接。
这是实现 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();
}
}
最佳答案
我不完全确定我是否理解您要完成的任务,但我认为您不必为此构建自己的模板类。
您的意思可能与我所说的“动态 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);
}
}
关于c# - 如何将超链接添加到动态 gridview 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819381/