2014-04-22 2 views
0

ASP.NET GridView 컨트롤의 셀에 런타임에 동적으로 하이퍼 링크를 추가하고 싶지만 적절한 접근 방식은 확실하지 않습니다. GridView 셀에 하이퍼 링크를 추가하려고하면 텍스트가 생성됩니다.

은 우선 단순히의 GridView에 대한 링크를 추가하는 시도 :

HyperLink the_url = new HyperLink(); 
the_url.NavigateUrl = "http://www.stackoverflow.com"; 
the_url.Text = "Stack Overflow"; 
MyGridView.Rows[0].Cells[0].Controls.Add(the_url); 

이 컴파일하지만, 물론 더 열이 없기 때문에 런타임 오류가 발생했습니다.

dt = new DataTable(); 

// Add columns to table 
DataColumn col = new DataColumn(); 
col = new DataColumn("URL"); 
dt.Columns.Add(col); 
col = new DataColumn("Title"); 
dt.Columns.Add(col); 

// Add row to table 
DataRow dr = dt.NewRow(); 
dr["URL"] = the_url; 
dr["Title"] = "Stack Overflow"; 
dt.Rows.Add(dr); 

// Bind table 
MyGridView.DataSource = dt; 
MyGridView.DataBind(); 

이것은 행을 생성하지만 대신에 링크를 보여주는, 그것은 일반 텍스트 "System.Web.UI.WebControls.HyperLink"를 표시 :

다음, 나는 DataTable을 결합했습니다.

무엇이 누락 되었습니까?

답변

1

사용 RowDataBound 이벤트 :

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    HyperLink the_url = new HyperLink(); 
    the_url.NavigateUrl = "http://www.stackoverflow.com"; 
    the_url.Text = "Stack Overflow"; 

    e.Row.Cells[0].Controls.Add(the_url); 
} 
관련 문제