2009-11-30 2 views
3

누군가가 도울 수 있기를 바랍니다.동적 그리드 뷰 열에 하이퍼 링크를 추가하는 방법

나는 동적 인 Gridview을 가지고 있습니다. gridview 열에 hyperlink이 있어야합니다. 이러한 하이퍼 링크는 클릭시 특정 데이터를 표시하는 팝업을 열어야합니다.

나는 동적 템플릿 필드를 사용하여 이것을 시도했다. 그러나 데이터 바인딩시에도 열의 하이퍼 링크를 얻을 수 없습니다. 하이퍼 링크가 아닌 데이터를 가져올 수 있습니다.

이것은 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(); 
    } 
} 

답변

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); 
     } 
    } 
+0

위와 같이 하이퍼 링크를 만들 수있었습니다. 하지만 이제 하이퍼 링크를 클릭하면 팝업이 나타납니다. 하나의 매개 변수가 팝업 화면에 전달되어야합니다. 어떤 생각 ?? – Avi

+0

늦게 응답하여 죄송합니다. 이를 수행하는 데는 몇 가지 방법이 있습니다. 가장 쉬운 방법은 자바 스크립트를 사용하여 다른 창을 만드는 것이라고 말하고 싶습니다. 다음과 같은 자바 스크립트 함수를 만들고 쿼리 문자열에 매개 변수를 사용하여 url을 전달할 수 있습니다. function createWindow (URL) { \t var newWindow = window.open (url, "newWindow", "toolbar = yes, 스크롤바 = 예, 너비 = 650, 높이 = 500 "); } 또 다른 옵션은 멋진 팝업 기능을 포함하는 Microsoft의 Ajax Control Toolkit을 사용하는 것입니다. 내 경험에 비추어 볼 때, 당신이 단순하게 유지한다면 그렇게하기가 어렵지 않습니다. –

+0

하이퍼 링크 클릭시 열리는 .csv 파일이 있습니다 ...이 문제와 관련하여 저를 도울 수 있습니까? 고맙습니다. – shruti

관련 문제