2012-10-31 3 views
0

Chechbox가 체크 된 행을 비활성화해야합니다. 다음 코드를 사용하여 RowDataBound 이벤트에서 시도했지만 오류 Object reference not set to an instance of an object이 표시됩니다.Gridview에서 행을 비활성화하는 방법은 무엇입니까?

CheckBox cbAttachClrReq = (CheckBox)gvEntity.FindControl("chkAdd"); 

    if (cbAttachClrReq.Checked) 
    { 
     this.gvEntity.Rows[e.Row.RowIndex].Enabled = false; 
    } 
+0

은'chkAdd' 가정은 행 내부에, 당신이 그것을 찾을 수 없습니다, 당신은 모든 행이 자신의이 포함되어 있기 때문에 행 자체 내에서 검색해야 확인란. –

답변

1

CheckBox 개체가 null 수있는 기회가있을 수 있습니다. 그래서 코드에 null 체크를 추가했습니다. 내가 그 체크 박스가있는 gridview에 가정 ...

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    CheckBox cbAttachClrReq = e.Row.FindControl("chkAdd") as CheckBox; 
    e.Row.Enabled = cbAttachClrReq == null || !cbAttachClrReq.Checked; 
} 
+0

이것은 현재 행이'DataRow'인지 확인하는 가장 좋은 해결책입니다 (header, footer, pager 또는 spacer 일 수도 있습니다, [DataControlRowType] (http://msdn.microsoft.com/en-us/)를보십시오. library/system.webcontrols.datacontrolrowtype.aspx)),이 행 인스턴스에서'CheckBox'를 찾아서 존재하는지 ('null'이 아닌지) 그리고 그것이 검사되는지 확인하십시오. 체크 박스가 토글 링을 허용하도록 설정되지 않은 경우 행을 '사용'하도록이 응답 방법을 변경할 수 있습니다. –

+0

토글에 관한 좋은 방향을 제시했지만 "chechbox가 체크 된 행 비활성화"라는 질문문에 따르면 CheckBox가 같은 행에 있음을 의미합니다. –

+0

필자는 목표가 체크 상자를 기반으로 행을 활성화 및 비활성화하도록 제안했기 때문에 코드는'e.Row.Enabled = cbAttachClrReq == null || ! cbAttachClrReq.Checked; ' –

1

다음을 시도해보십시오

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    CheckBox cbAttachClrReq = e.Row.FindControl("chkAdd") as CheckBox; 

    if (cbAttachClrReq != null && cbAttachClrReq.Checked) 
     e.Row.Enabled = false; 
} 

개체가 null 경우 댓글에서 가치있는 제안에 따라, 당신도 CheckBox 상태를 전환 할 수 있습니다 ADDED 행 ....

protected void gvEntity_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox cbAttachClrReq = (CheckBox) e.Row.FindControl("chkAdd"); 

     if (cbAttachClrReq.Checked) 
     { 
      e.Row.Enabled = false; 
     }  
    } 

} 
0

다음을 시도해보십시오 ... 나는 gridview r에 있다고 가정합니다. 은`GridView`에 searchding 때 OWS의 셀 ....

protected void gvEntity_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox cbAttachClrReq = (CheckBox) e.Row.Cells[yourCellIndexOFChBox].FindControl("chkAdd"); 

     if (cbAttachClrReq.Checked) 
     { 
      e.Row.Enabled = false; 
     }  
    } 

} 
+0

글자 그대로 내 대답을 붙여 넣기 복사하면 "셀"이 추가되었습니다 ... –

관련 문제