Jag fick god hjälp i min förra tråd(Problem med if-sats). Jag antar att du kör getName för varje rad i databasen? Då kommer det att bli rött varje gång. Din lösning bygger på att du loopar i funktionen getName och aldrig ställer om "int hightPoints = 0;" igen. Ifall listan kan vara sorterad på någonting annat än antalet hits, så behöver du ju kolla vilket värde som är högst innan du börjar loopa ut dem. vad sägs om att i item_databinding kolla om du är på raden med flest hits typ med hjälp av en property Tack för svar, men jag är fortfarande osäker på hur jag skall lösa detta. När jag trodde att allting skulle gå så bra... mmm ser klumoigt ut men fan funkar det så är väl alla glada :)Hitta högsta värdet!!!
Jag vet nu hur det skall gå till.
Det jag skulle vilja få tips på är fäljande:
I en repiter, så har jag en lista på de mest spelade låtarna, det ser ut ung så här.
Titel Hits
Ordinary Man 151
Delad Kärlek 107
Bring Back My Summer 95
Beautifull Words 87
What Else 63
Jag ville nu färga den översta raden dvs den rad som har flest hits.
<code>
public string getName(object dataItem)
{
string colorRatt = "";
int sRatt = Convert.ToInt32(DataBinder.Eval(dataItem, "Hits"));
int hightPoints = 0;
if(sRatt > hightPoints)
hightPoints = sRatt;
if (hightPoints == sRatt)
colorRatt = "<font color = red><b>" + hightPoints + "</b></font>";
else
colorRatt = "<font color = black>" + sRatt.ToString() + "</font>";
return colorRatt;
}
</code>
Detta gör att alla siffror blir röda.
Några tips???Sv: Hitta högsta värdet!!!
Kör du getName för varje rad kommer ju sannolikt hits att vara > 0 varje gång.
För att få det att funka borde highPoints deklareras globalt och bara sättas till noll en gång i början av sidan.
Fast jag är ny på ASP.NET själv :)
/JonasSv: Hitta högsta värdet!!!
Ifall listan alltid är sorterad på det där sättet, så behöver du ju bara spara det första värdet och färga alla med samma värde (ifall det skulle vara en delad första plats).Sv:Hitta högsta värdet!!!
och färga den isf?Sv: Hitta högsta värdet!!!
Det är alltid den översta raden som är högst, sql:en är utformad så.
Hur kan jag kolla om jag är på rad 1 (0)?
[REDIGERAT]
Jag tror att jag har hittat någonting värdefullt.
Om man använder sig av Web.Config.
<code>
NameValueCollection config = (NameValueCollection)
ConfigurationSettings.GetConfig("myGroup/nestedGroup/mySection");
Response.Write("The value of key_one is " + Server.HtmlEncode(config["key_one"]) + "<br>");
</code>
Här ser det ju ut som om jag skulle kunna spara, men jag har inte hittat någonting om hur jag skall
skriva/spara i Web.Config.
[REDIGERAT]
Jag har lagt till en nyckel i Web.Config
<code>
<add key="Hits" value="151" />
'som jag lätt kan läsa av
string sHits = WebConfigurationManager.AppSettings["Hits"];
Response.Write("Hits :" + sHits);
'men när jag försöker att lägga till värde
WebConfigurationManager.AppSettings.Add("Hits", "200");
'jag gör antagligen det väldigt dumt
</code>
Så får jag" Konfigurationen är skrivskyddad."
[REDIGERAT]
Nu kan jag skriva till webb.config
<code>
Configuration cfg;
cfg = WebConfigurationManager.OpenWebConfiguration("~");
KeyValueConfigurationElement setting = ((KeyValueConfigurationElement)(cfg.AppSettings.Settings["Hits"]));
if (!(setting == null))
{
setting.Value = sHits;
cfg.Save();
}
</code>
Nu är det bara resten kvar.Sv:Hitta högsta värdet!!!
<code>
public string getcolorRatt(object dataItem)
{
string colorRatt = "";
int sRatt = Convert.ToInt32(DataBinder.Eval(dataItem, "Hits"));
int hightPoints = Convert.ToInt32(WebConfigurationManager.AppSettings["Hits"]); ;
if (sRatt > hightPoints)
{
hightPoints = sRatt;
Webbutill.writeHits(sRatt.ToString());
}
if (hightPoints <= sRatt)
colorRatt = "<font color = red><b>" + hightPoints + "</b></font>";
else
colorRatt = "<font color = black>" + sRatt.ToString() + "</font>";
return colorRatt;
}
</code>
och classen
<code>
public static string writeHits(string sHits)
{
string ok = "";
Configuration cfg;
cfg = WebConfigurationManager.OpenWebConfiguration("~");
KeyValueConfigurationElement setting = ((KeyValueConfigurationElement)(cfg.AppSettings.Settings["Hits"]));
if (!(setting == null))
{
setting.Value = sHits;
cfg.Save();
}
return ok;
}
</code>
Och nycklen
<code>
<appSettings>
<add key="titel" value="Svenssons AckordsWerkstad Wexiö!" />
<add key="Hits" value="151" />
</appSettings>
</code>
Det såg först ut som om det inte fungerade, men nu såg jag att den hadde ändrat värde.
Ser det här för klumpigt ut???Sv: Hitta högsta värdet!!!
if it aint broken
dont fix it
YAGNI
:)