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ı
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;
}
}
}
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
Ve neden okunabilirlik için d + = 2 kullanmıyorsunuz. – Toxantron
Bunun yanlış olduğunu biliyorum ve bu yüzden neden denediğimi her iki yöntemle de kodu gösterdim. – JamieB