2016-10-26 1 views
1

Gridview에서 10 열 이쪽 templatefield : 그것이 foreach 루프로 언급된다Gridview TemplateField 행을 참조하는 방법은 무엇입니까?

여기
<asp:TemplateField> 
<HeaderTemplate> 
<asp:Label runat="server">Active Licenses</asp:Label> 
</HeaderTemplate> 
<ItemTemplate> 
<asp:Label ID="lblActiveCodes" runat="server" Text='intValues'></asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 

이다.

foreach (GridViewRow row in gvCustomers.Rows) 
{ 
    if (row.Cells[10].Text.Equals(0)) 
    { 
     row.Visible = false; 
    } 
} 

그래서 그것은 GridView에서 열 (10) 내가 보이지 않는 값을 0으로 세포를 만들기 위해 찾고 있어요. intValues은 데이터베이스에서 제공된 int입니다. gvCustomers은 이 내 GridView입니다.

어떻게 row.Cells[10]이 작동하지 않겠습니까?하지만 더 중요한 것은 어떻게 작동시킬 수 있습니까?

+0

다음과 같이 'Visible ='속성을 설정할 수 있습니다. '% # GetVisible (Eval ("intValues") .ToString()) %>''그런 다음 코드 숨김의 GetVisible 메소드에서 0과 같으면 false를 반환합니다. 7 시간 전에 답변 한이 질문을 확인해보십시오. http : //stackoverflow.com/questions/40263845/set-date-visible-condition-in-linkbutton –

답변

1

큰 따옴표를 0으로 입력하십시오. 텍스트 유형은 문자열입니다.

if ((row.Cells[10].FindControl("lblActiveCodes") as Label).Text.Equals("0")) 
0

많은 문제가 여기에 있습니다.

먼저 레이블 텍스트에 열을 바인딩하려면 Eval을 사용해야합니다. 현재 텍스트는 "intValues"텍스트 그대로입니다. 따라서 :

Text='<%# Eval("intValues") %>' 

둘째, 레이블은 서버 쪽 컨트롤입니다. 셀에는 간단한 텍스트가 아닌 컨트롤이 포함됩니다. 그래서 당신은이 컨트롤을 찾고 있어야합니다. 그건 그렇고, 당신은 전체 행에 대해 그렇게 할 수 있으므로 필요가 열 인덱스 계산하지 않으려면 : 값이 지금 문자열 인 레이블 텍스트에 결합되면,

Label label = row.FindControl("lblActiveCodes") as Label; 

셋째. 열 값이 문자열이 아니면 ToString 호출로 변환됩니다. 따라서 :

if (label != null && label.Text != "0") 
{ 
    row.Visible = false; 
} 

마지막으로,이 코드를 실행할 때 언급하지 않았습니다. 그것은 항상 작동하지 않을 것입니다, 그리드보기는 이미 데이터 바운드가되어야합니다. 이와 같은 것을 실행하는 가장 좋은 시간은 RowDataBound 이벤트입니다.이 경우 행을 반복 할 필요가 없으며 그리드보기가 데이터 바운드이고 모든 컨트롤이 생성된다는 것을 100 % 보장합니다.

+0

네, 맞습니다. 테스트해볼거야. –

+0

@Java, 잠시만 기다려주세요. 더 많은 정보를 편집 중입니다. – Andrei

관련 문제