2012-05-10 1 views
0

내있는 gridview에서 데이터를 가져올 수 없습니다 :가 내가 이런 식으로하고있어 내가있는 gridview에서 특정 셀의 데이터를 얻을 수있는 문제가

double total = 0; 

for (int i = 0; i < GridFactures.Rows.Count; i++) 
    total += Convert.ToDouble(GridFactures.Rows[i].Cells[6].Text.ToString()); 

lblTotalTTC.Text = "Montant total TTC : " + total; 
문제의 열이 내 영문 파일에 선언

:

<asp:TemplateField HeaderText="Montant TTC"> 
    <ItemTemplate> 
     <asp:Label ID="lblMontantTTC" runat="server" Text='<%#Eval("MontantTTC") %>'/> 
    </ItemTemplate> 
</asp:TemplateField> 

항상 확인하고 싶은 여섯 번째 열입니다. 나는 휴식을 넣어 GridFactures.Rows[i].Cells[6].Text.ToString() 항상 아무것도 더 ... 당신의 도움을 감사

답변

0

에게 의미, 제로 인덱스 없다 ""포함 오해 (및 라벨 셀에서 첫 번째/전용 컨트롤입니다) -

그런 다음 이렇게 마찬가지로는 .text에 대한

을 물어, 인덱스 0에 제어를 요청, 또는 id로를 찾을 필요가 :

GridFactures.Rows[i].Cells[6].Controls[0].Text.ToString() 
+0

불행히도 이것은 작동하지 않습니다. 실제로 gridview에서 데이터를 가져올 수 없습니다. – Slrg

+1

테스트 목적으로 GridFactures.Rows [i] .FindControl ("lblMontantTTC") 메서드를 사용해보고 그 방법으로 찾을 수 있는지 확인하십시오. –

+0

다시 한번 고마워요.하지만 그 중 하나도 작동하지 않습니다 ... 이해가 안됩니다. – Slrg

0

가 기억이 너무 [6] 아니에요 경우 휴대 7

+0

예 내가 그것을 알아! 나는 0에서 세어 시작했다. 하지만 고마워! – Slrg

+0

hehe 실수가 너무 자주 만들어 졌음을 확신해야합니다.) – RhysW

0

이유를 알고 있습니다. 나는 방금 같은 상황에 처했다. 비어있는 필드를 검사해야 할 경우 먼저 0으로 변환해야합니다.

total += (GridFactures.Rows[i].Cells[6].Text == "")? 0d : Convert.ToDouble(GridFactures.Rows[i].Cells[6].Text.ToString()); 
1

루핑 대신 LINQ를 사용하는 것이 어떻습니까? 더 값을 볼 수없는 경우

double mySum = 
     GridFactures.Rows 
        .Cast<GridViewRows>() 
        .Sum(row => 
       Double.Parse(((Label)row.FindControl("lblMontantTTC")).Text)); 

은 다음 그리드는 실제로 아직 데이터 바인딩되지 않았거나의 ViewState는 그리드에 사용할 수 없습니다. 이 모든 것은 페이지 수명주기에서이 계산을 수행하는 위치/시간에 따라 다릅니다. 대신이 코드의

2

:

for (int i = 0; i < GridFactures.Rows.Count; i++) 
    total += Convert.ToDouble(GridFactures.Rows[i].Cells[6].Text.ToString()); 

이 시도 :

for (int i = 0; i < GridFactures.Rows.Count; i++) 
{ 
    Control ctrl = GridFactures.Rows[i].Cells[6].FindControl("lblMontantTTC"); 
    if (ctrl != null) 
    { 
     Label lbl = ctrl as Label; 
     if (lbl != null) 
     { 
      total += Convert.ToDouble(lbl.Text); 
     } 
    } 
} 
관련 문제