2013-10-16 3 views
1

데이터베이스 테이블에서로드되는 gridview가 있습니다. 'valid'라는 이름의 테이블에 'Y'또는 'N'값이있는 열이 하나 있습니다. 이제 'valid'값이 Y인지 확인하기 위해 gridview를로드 할 때 해당 행의 전체 레코드가 비활성화 된 것으로 표시되어야합니다.데이터베이스 테이블 열 값을 기준으로 gridview 행을 사용하지 않음

어떻게 진행하나요? 이 절차를 작성해야합니까, 아니면 코드 뒤에서 할 수 있습니까?

참고 : 유효 열은 gridview의 일부가 아닙니다.

+0

왜 유효한있는 gridview의 일부가 아닌? –

+0

유효한 열을 격자보기에 표시 할 필요가 없습니다. 유효한 열이 gridview – Rooney

+0

의 비활성화/활성화 행에 대해서만 데이터베이스 테이블에 저장되었습니다.이 필드를 숨겨진 필드에 추가하고 shekhar 응답에 표시된대로 RowDataBound 이벤트를 가져올 수 있습니다. –

답변

5

행을 비활성화하려면 gridview 이벤트 RowDataBound을 사용해야합니다.
databound columns을 사용하는 경우 trtd으로 렌더링되고 셀을 찾은 다음 disable 속성을 설정해야합니다.

다음과 같이

protected void gvEntity_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //CheckBox cbAttachClrReq = (CheckBox) e.Row.FindControl("chkAdd"); 
     //check the value here and set enable property 
     e.Row.Enabled = false; 

    } 

} 

는 @Hanlet Escaño는

<asp:TemplateField> 
    <ItemTemplate> 
     <<asp:Label ID="lbl1" runat="server" 
      Value='<%# Eval("Name") %>' /> 
     <asp:HiddenField ID="HiddenField1" runat="server" 
      Value='<%# Eval("valid") %>' /> 
</ItemTemplate> 

을 다음과 같은 열에서 필드 값을 추가하고 행 데이터 바인딩 이벤트의 숨겨진 필드 값을 얻을 수 있습니다 제안했다으로

protected void gvEntity_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     HiddenField Hf = (HiddenField) e.Row.FindControl("HiddenField1"); 
     if(Hf.Value=="Y") 
      e.Row.Enabled = false; 

    } 

} 
+0

+1,하지만 OP는 필드가 GridView의 일부가 아니라고 생각합니다. 어쩌면 그 chkAdd가 대신 숨겨진 필드 일 수도 있습니다. –

+1

네, 좋은 생각이 있거나 그는 linq을 사용하여 자신의 출처에있는 데이터를 식별 컬럼을 기준으로 필터링 할 수 있습니다. –

+0

답장을 보내 주셔서 감사합니다. 제안대로 구현하려고합니다. 곧 돌아올거야. – Rooney

2

다음을 시도해보십시오.

이 예제에서는 레코드 당 DataRowView을 얻은 다음 테스트 할 기본 데이터 소스에서 valid 열을 추출합니다.

protected void grdDetails_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      var dr = e.Row.DataItem as DataRowView; 

       if(Convert.ToString(dr["valid"]) == 'Y') 
        e.Row.Enabled = false; 

     } 
    } 

및 마크 업

<asp:GridView ID="grdDetails" runat="server" OnRowDataBound="grdDetails_RowDataBound" 
+0

나는 처음에 오해했다. 이 대답은 문제를 해결해야합니다. –

관련 문제