摘要:[Gridview]垂直加總有整數與浮點數,怎麼加?
我想在Gridview中做「垂直加總」,但是我想要加總的那一欄是e.Row.Cells[9].Text,
它有「整數」也有「小數點」,所以若照我上一篇的加總方式一定會報錯,
因為我無法得知e.Row.Cells[9].Text的整欄何時出現整數、何時出現小數點,
故無法直接 sum += Convert.ToInt32(e.Row.Cells[9].Text);
故我想出一個方式:(卡關卡1天,想破頭)
1、先用if判斷e.Row.Cells[9].Text 整欄中是否為「整數(int)」或「非整數(double)」
2、若是整數,直用Convert.ToInt32(e.Row.Cells[9].Text)即可....
但...若遇上null,則會有錯誤,故我用int.TryParse來防止轉換失敗時其值為「0」。
(不做防呆,網頁一執行定會報錯)
3、判斷非整數(double),用if
(e.Row.Cells[9].Text.ToString().IndexOf(
"."
) != -1)
//小數
再直接 Convert.ToDouble(e.Row.Cells[9].Text) 即可。
4、把上述2、3的加總結果再相加即可。程式碼如下:
double sum1 = 0; //記得作全域變數
int sum2 = 0;//記得作全域變數
double sum3, sum4;//記得作全域變數
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[9].Text.ToString().IndexOf(".") != -1)//小數
{
double s1 = Convert.ToDouble(e.Row.Cells[9].Text);
sum1 += s1;
}
else
{
int s2;
if (!int.TryParse(e.Row.Cells[9].Text, out s2) == true)
{ s2 = 0; }
// if(int.TryParse("11.5",out i)==true )
//int s4 = Convert.ToInt32(e.Row.Cells[9].Text);
sum2 += s2;
}
string sum3 = (sum1 + sum2).ToString();
sum4 = Convert.ToDouble(sum3);
//整數+非整數→一定是非整數,故sum4型態要定成double
}
if
(e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[1].Text = "小計";
e.Row.Cells[9].Text = sum4.ToString();
//設定這個footer的字顏色與背景
e.Row.BackColor = System.Drawing.Color.Chocolate;
e.Row.ForeColor = System.Drawing.Color.White;
}
}
--
強烈建議購物網店或實體店家都必須使用關鍵字廣告or原生廣告來 將Yahoo上與聯播網的廣大流量導至自己的網站!
●Yahoo關鍵字廣告/原生廣告
◆Yahoo廣告方案介紹 : https://goo.gl/5k8FHW
◆Yahoo廣告剖析與運用 : http://goo.gl/4xjUJD