2012-10-22 87 views
0

我有一個價格列顯示檢查行的總價格。最初我嘗試用選擇按鈕來做這件事,但它沒有起作用,所以我在GridView中添加了一個複選框。現在我需要當我檢查標籤我厭倦了這種代碼的某些行這些行的總和出來,但我得到一個錯誤:總計gridview列的值在複選框的選擇

double sum = 0; 

    foreach (GridViewRow gvr in GridView1.Rows) 
    { 
     CheckBox cb = (CheckBox)gvr.FindControl("Checkbox1"); 
     if (cb.Checked) 
     { 
      double amount = Convert.ToDouble(gvr.Cells[2].Text); 
      sum += amount; 
     } 


     Label1.Text = sum.ToString(); 

    } 
+0

請詳細說明錯誤並告訴我們您正在收到的確切錯誤信息? *我有錯誤雙和= 0; *不是很清楚 – naveen

+1

錯誤信息是什麼? –

+1

我想他是越來越(對象引用沒有設置爲一個對象的實例):) –

回答

0

什麼,我認爲你正在做電網之外的所有這些工作,我的意思是你有一個按鈕在你的頁面上點擊你運行這個代碼的地方。對???如果是,那麼你必須在你的代碼中包含一件東西,這是一個數據行檢查...

double sum = 0;

foreach (GridViewRow gvr in GridView1.Rows) 
{ 
if(gvr.RowType == DataControlRowType.DataRow) 
{ 
    CheckBox cb = (CheckBox)gvr.FindControl("Checkbox1"); 
    if (cb.Checked) 
    { 
     //check wether the cell value is empty or not, if empty take a 0 instead... 
     double amount = gvr.Cells[2].Text.Trim() != null && gvr.Cells[2].Text.Length>0 ? Convert.ToDouble(gvr.Cells[2].Text.Trim()) : 0; 
     sum += amount; 
    } 


    Label1.Text = sum.ToString(); 
    } 

} 

若不是這種情況,那麼你必須做它在每個複選框的更改事件.. 告訴我關於這個問題,如果解決了,我會在林間空地,以幫助您...

+0

是啊我有一個按鈕之外的網格但是當我嘗試我們的代碼時,我得到了同樣的錯誤,即「輸入字符串的格式不正確」 – faezajackson

+0

這只是因爲您要轉換爲單元格中的值爲double是空的。你必須先檢查單元格值是否可以轉換爲雙倍? –

+0

現在我編輯,看看編輯代碼 –

0

雙和= 0;

foreach (GridViewRow gvr in GridView1.Rows) 
{ 
    CheckBox cb = (CheckBox)gvr.FindControl("Checkbox1"); 
    if (cb.Checked) 
    { 
     double amount = Convert.ToDouble(gvr.Cells[2].Text.replace("&nbsp","")); 
     sum += amount; 
    } 


    Label1.Text = sum.ToString(); 

} 
+0

double amount = Convert.ToDouble(gvr.Cells [2] .Text.Trim(); –