2016-04-13 21 views
0

VS2010'dan VS2010'a çalışan bir VB projesini VS2015'e dönüştürdüm ancak şimdi Int/decimal dizesi artık çalışmıyor ... ve benim için neden olduğunu bul. sayfa RowDataBound tetikleyiciler (doğru çalışma) yükler ama if değerlere dayalı hücreleri vurgulamak için tetikler varken vermek içinProject VB'den C# - Int32'ye Dize veya Decimal çalışmıyor

olmakla işe görünmemektedir ..

Yani kodundan görebilirsiniz yapabilirsiniz aşağıda, ondalık denedim (Tüm değerler 0'a dönüşür, dolayısıyla tetikleyici olmaz), tüm tetikleyicileri hala 0 olarak gösterdiğim int32'yi denedim, bu yüzden SQL veri ile int'ye dönüştürme arasındaki dönüşümünü düşünüyorum.

herhangi bir fikir ben :(burada benim fikir sonunda kulüpler olarak.

ps veri basamak olacak şekilde var ama değeri 45'ten büyük olması durumunda olarak karşılaştırıldığında gereken ya da değer 40 ile 45 arasında (eğer veya 44,999999999)

-EDIT-

aşağıdaki kodu çalıştık kodunun iki tür (her ikisi de başarısız göstermektedir) ve bu konu kullanılabilir bir ondalık/uluslararası fonksiyonuna e.Row.Cells[y].Text bölümü dönüştürmektedir

. - Son Düzenleme -

veri sorunu VS2015 hala ondalık temiz bir şekilde değiştirildi rağmen int olarak testval toplayıp olmasıydı SQL Data in Excel form for ease of copying

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    string testValue = e.Row.Cells[3].Text; 

    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     e.Row.Cells[0].Visible = false; 
    } 

    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     for (int d = 3; d <= 22; d++) 
     { 
      e.Row.Cells[d + 1].Visible = false; 
      e.Row.Cells[d].ToolTip = e.Row.Cells[d + 1].Text; 

      d = d + 1; 
     } 

     e.Row.Cells[0].Visible = false; 

     for (int y = 3; y <= 22; y++) 
     { 
      Decimal testval; 

      if (string.IsNullOrWhiteSpace(e.Row.Cells[y].Text)) 
       return; 

      Decimal.TryParse(e.Row.Cells[y].Text,out testval); 
      int n = Convert.ToInt32(testval); 

      if (n > 44.999999) 
      { 
       if (testval < 45) 
       { 
        e.Row.Cells[y].Attributes.Add("Style", "background-color: orange;"); 
        e.Row.Cells[y].ForeColor = Color.Black; 
       } 
      } 

      if (testval > 44.9999999999999) 
      { 
       e.Row.Cells[y].Attributes.Add("Style", "background-color: red;"); 
       e.Row.Cells[y].ForeColor = Color.Black; 
      } 

      y = y + 1; 

      if (testval > 0) 
      { 
       e.Row.Cells[23].Attributes.Add("Style", "background-color: red;"); 
       e.Row.Cells[23].ForeColor = Color.Black; 
      } 
     } 

     for (int x = 3; x <= 22; x++) 
     { 
      int testval1; 

      int.TryParse(e.Row.Cells[x].Text, out testval1); 
      if (testval1 == 0) 
      { 
       e.Row.Cells[x].Text = "Rest"; 
      } 
      x = x + 1; 
     } 
    } 
} 
+2

Int ondalık yok. Bu satır _int n = Convert.ToInt32 (testval); _ satırın herhangi bir anlam ifade etmiyorsa her şeyi ve aşağıdakileri keser – Steve

+0

Ve neden okunabilirlik için d + = 2 kullanmıyorsunuz. – Toxantron

+0

Bunun yanlış olduğunu biliyorum ve bu yüzden neden denediğimi her iki yöntemle de kodu gösterdim. – JamieB

cevap

0

depolandığı nasıl/bu sabit yeniden oluşturma.