NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Honza
Člen
Avatar
Honza:24.7.2015 17:41

Ahoj, předem bych se chtěl omluvit pokud jsem tento dotaz zařadil do špatného vlákna, byl jsem na vážkách protože je to půl na půl .Net a HTML.

Takže, dělám webovou aplikaci v ASP .Net (C#, .Net 4.0, WebForms). Na stránce mám div kterému v codebehind nastavuju atribut title který se na stránce objeví jako tooltip, když myš zůstane nad divem.
Data načítám z databáze, jedná se o výpis položek a časový údaj. Potud je vše ok. Potřeboval bych ale nějakým způsobem údaje v tooltipu zarovnat.
Teď text vypadá zhruba takto:

Oběd: 11:00 - 11:30
Krátká pauza: 14:00 - 14:15
Školení: 08:00 - 16:00

Vložení textu a odřádkování je ok, mám ale problém s odsazením, aby časy byly zarovnané vpravo. Už jsem se smířil s tím že do tooltipu můžu dát jen prostý text, takže si nepomůžu žádným html tagem. Zkoušel jsem do textu vkládat tabulátory a zkusil jsem si i vytvořit funkci která mi název akce (oběd, školení atd.) doplní mezerama na 50 znaků, což je maximum které se v daném "sloupci" může objevit. Občas je ale i tak text rozházený. Tipuju že kvůli tomu že každé písmeno je jinak široké. Nenapadá někoho nějaká vychytávka jak string zarovnat? Např. vložením nějakého speciálního znaku do textového řetězce atd.? Popř. by problém mohlo vyřešit nastavení neproporciálního písma atributu title, to ale nevím jestli jde.

Vím že pro tooltipy jdou využit javascriptové knihovny, ale mně tooltip v podstatě vyhovuje tak jak je, jen potřebuju zarovnat časové údaje doprava.

předem díky za jakýkoli nápad

Odpovědět
24.7.2015 17:41
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
hanpari
Člen
Avatar
Odpovídá na Honza
hanpari:24.7.2015 18:53

Tohle by ti mělo stačit:
Např.
String.Format("{0,-10:C}", 126347.89m);

Zdroj:
https://msdn.microsoft.com/….110%29.aspx

Musíš si to nastudovat a přizpůsobit :)

 
Nahoru Odpovědět
24.7.2015 18:53
Avatar
Honza
Člen
Avatar
Odpovídá na hanpari
Honza:27.7.2015 7:57

Ahoj, moc díky nahradil jsem tím tu svojí funkci :) Bohužel problém ale stále přetrvává (viz. obrázek). Je otázka jestli tohle vůbec půjde vyřešit nastavením formátu v C#, možná že to je prostě jen problém toho jak si to vyrenderuje prohlížeč.

Formát nastavuju takhle (toolTip je stringBuilder):

toolTip.AppendFormat("{0,-50}{1,-6:HHH:mm}-{2,6:HHH:mm}\n", task.TypeName, task.TimeFrom, task.TimeTo);

Logicky by to fungovat mělo, protože pokud jsem to z msdn pochopil správně, číslem nastavím šířku pseudosloupce a kladná hodnota znamená zraovnání vpravo, záporná zarovnání vlevo.

Editováno 27.7.2015 7:58
Nahoru Odpovědět
27.7.2015 7:57
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Honza
Člen
Avatar
Honza:27.7.2015 8:19

Teď jsem to ještě zkoumal a problém bude asi opravdu v proporcionálním písmu. Počet mezer se nastaví správně, ale vzhledem k tomu že například "I" nezabírá stejně jako "W" tak to je pak rozhozené. Takže otázka je zde jde nějak v tooltipu z měni font na neproporcionální :)

Editováno 27.7.2015 8:21
Nahoru Odpovědět
27.7.2015 8:19
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.