簡體   English   中英

如何將超鏈接添加到動態gridview列

[英]How to add a Hyperlink to a dynamic gridview column

我有一個問題希望有人可以提供幫助。

我有一個動態的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);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM