我有一个问题希望有人可以提供帮助.
我有一个动态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)
我不完全确定我理解你要完成的任务,但我认为你不应该为此建立自己的模板类.
除了我在想的"动态网格视图"这个术语之外,你可能会想到一些其他的东西,但如果你需要在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)
| 归档时间: |
|
| 查看次数: |
22569 次 |
| 最近记录: |