2012-01-12 5 views
1

텍스트 상자와 두 개의 LinkButton을 가진 gridview가 있고 위 아래로 LinkButton을 사용 안함으로 위 아래로 만들고 싶습니다. 조건은 LinkButton Up이 첫 번째 행에서 비활성화되어야하고 LinkButton Down이 마지막으로 비활성화되어야합니다. 열.GridView의 첫 번째 행과 마지막 행을 기준으로 ItemTemplate LinkButton을 사용하거나 사용하지 않도록 설정하는 방법은 무엇입니까?

몇 가지 테스트 특급으로 ..

foreach (GridViewRow row in GridView1.Rows) 
{ 
    // some code? 
} 

어떤 사람이 어떻게 그렇게하는 방법을 가르쳐주세요 .. 내가 onRowDataBound에서 할 노력하고 있어요 ..하지만 할 수없는입니다.

답변

2
의 GridView가 바인딩 된 후 나는 OnRowDataBound 이벤트에 그것을 할 것

, 내가 컨트롤을 사용하지 않도록합니다 :

// Bind 
gv.DataSource = datasource; 
gv.DataBind(); 

// Disable Up/Down LinkButtons 
if (gv.Rows.Count > 0) 
{ 
    // With FindControl() if you know the IDs: 
    ((LinkButton)gv.Rows[0].Cells[0].FindControl("lb_up").Enabled = false; // Disable up LinkButton 
    ((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].FindControl("lb_down").Enabled = false; // Disable down LinkButton 

    // -- OR -- 

    // Directly index the controls, assuming Up is at 0, and Down is at 1: 
    ((LinkButton)gv.Rows[0].Cells[0].Controls[0]).Enabled = false; // Disable up LinkButton 
    ((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].Controls[1]).Enabled = false; // Disable down LinkButton 
} 

당신은 FindControl 메서드하거나 직접 인덱스 컨트롤 중 하나를 사용할 수 있습니다 .

+0

이 코드는 나를 위해 그리드의 DataBound 이벤트에서 근무했습니다. – MrPhil

0

RowDataBound 이벤트에서 RowType을 비교해야합니다. 이런 식으로 뭔가 : 당신은 각각는 HeaderTemplate 및 FooterTemplate 영역에 DownUp 버튼을 추가 할 수 있습니다

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    GridViewRow row = e.Row; 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     ..... 
    } 
} 

.

if (row.RowType == DataControlRowType.Header) 
    { 
    } 

if (row.RowType == DataControlRowType.Footer) 
    { 
    } 
+0

Gridview에 텍스트 상자가 5 개 있다고 가정하고 5 개의 텍스트 상자를 모두 표시하고 btn을 표시 한 다음 텍스트 상자를 위아래로 이동하려고하거나 텍스트를 움직여서 말할 수 있습니다. 그것은 첫 번째 텍스트 상자 때 다음 btn 해제해야합니다 그리고 마지막 텍스트 상자를 누른 다음 btn 해제해야합니다 ... – Rocky

0

당신은 당신은 당신의 링크가 asp:TemplateField 내부에있는 this.Assuming처럼 그리드를 바인딩 같은 작업을한다.

if (GridView1.PageIndex == 0) 
    { 
    GridView1.Rows[0].FindControl("lnkUp").Visible = false; 

    } 
    if (GridView1.PageIndex == (GridView1.PageCount - 1)) 
    { 
     GridView1.Rows[GridView1.Rows.Count - 1].FindControl("lnkDown").Visible = false; 
    } 
관련 문제