dení a noční styl jak vytvořit metodu   otázka

VB.NET, ASP.NET WebForms

ahoj all,

potřeboval bych viřešit jedno mé dylema a to jak vytvořit metodu aby se přepínaly designy dle časové podmínky část už mám ale nevím jak to dořešit zkoušel jsem tam několik způsobů ale už vážně nevím

Ukázka nefunkčního řešení

        If Date.Now.Hour <= 20 And Date.Now.Hour >= 6 Then
            'kód pro nastavení stylu nočního
            Page.Theme.Length.ToString("~/App_Themes/Night/css/styles.css")
        Else
            'kód pro nastavení stylu denního
            Page.Theme.Length.ToString("~/App_Themes/Day/css/styles.css")
        End If

předem děkuji za jakýkoliv typ a příspěvek

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No, spíš bych se vrhnul na řešení tvé češtiny, a pak bych teprve přešel k absolutním základům programování...

Ta podmínka vypadá dobře, ale jak to proboha přidáváš to téma?

Co třeba zkusit:

 Page.Theme = "Day"
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

mno tak tohle nefunguje

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No, smím vidět celou metodu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

toto je kompletní metoda

    Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender


        If Date.Now.Hour <= 6 And Date.Now.Hour >= 20 Then
            'kód pro nastavení stylu nočního
            Page.Theme = "~/App_Themes/Day/css/styles.css"
            'Page.StyleSheetTheme = ~/App_Themes/Day/css/styles.css
        Else
            'kód pro nastavení stylu denního
            Page.Theme = "~/App_Themes/Day/css/styles.css"
            'Page.StyleSheetTheme = ~/App_Themes/Day/css/styles.css
        End If

    End Sub
End Class

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No nefunguje ti to, protože tohle jsem ti taky nikdy neradil.

Co má znamenat tohle:

"~/App_Themes/Day/css/styles.css"

Vůbec nevíš, jak použít témata v ASP.NET. Doporučoval bych, nastudovat absolutní základy toho, co chceš zrovna programovat.

Ve Visual Basicu běžně nedělám, protože spíš pracuji v C#, ale tohle by mělo být naprosto totožné.

Funkční kód je tento:

Page.Theme = "Název Tématu"

Místo: Název Tématu, dej název podadresáře v adresáři App_Themes.

To znamená, pokud máš "~/App_Themes/Day/" tak pužij jenom to Day.

To, že se to má najít ve složce App_Themes už ASP.NET ví, a taky ti automaticky přidá do stránky html tagy <link>, které budou odkazovat na css soubory v tom podadresáři Day.

Proto CSS soubory neumístuj do dajší podsložky, ale dej je tak, aby byly přímo ve složce Day. To znamená: "~/App_Themes/Day/Styly.css"

Pak by ti vše mělo fungovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, s tímhle kódem se posunete dál, ovšem téma lze změnit pouze v události Page_PreInit, později už ne.

Naštěstí v tomhle kódu nemáte žádné závislosti, takže stačí Page_PreRender změnit na Page_PreInit.

Pak to bude fungovat.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

takže na Page_PreInit to nejede a nejede to ani na Page_Init jo a Page_PreRender nečekaně taky ne

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tak tohle nechápu.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Kód je napsán takto

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.PreInit
        If Date.Now.Hour <= 20 And Date.Now.Hour >= 6 Then
            'kód pro nastavení stylu nočního
            Page.Theme = "Night"
        Else
            'kód pro nastavení stylu denního
            Page.Theme = "Day"
        End If
End Sub

ale stejně to nefunguje kvůli tomu že to na konci řádku jak začíná ta metoda tak to nedokáže rozpoznat to Me.PreInit

ale momentálně je tato metoda vypnutá aby to fungovalo aspoň nějak

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nefunguje to kvůli tomu,že to děláte blbě,jelikož vůbec nevíte co píšete nebo mi to alespoň tak přijde.Osobně jsem si teď změnu tématu dle denní doby zkoušel a vše funguje jak má.Rozdílné nastavení/kód je akorát v případě,že používáte MasterPage..tam metoda PreInit samozřejmě použít nelze a je třeba použít tzv.bázovou třídu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A poradil by jste mi tedy jak to mám vyřešit pomocí té bázové třídy??? protože to mám v Site.master.vb

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je třeba vytvořit tzv. bázovou třídu..což je třída která dědí od namespace System.Web.UI.Page a ve které vytvoříte potřebné fce...tuto třídu následně podědíte v potřebných stránkách.Ale to jsou vcelku základy,respektive bez tohoto se často neobejdete.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

a nebyla by alespoň nějaká nápověda jak přesněji udělat bázovou třídu pro Day & Night Themes??? já vím že jsem něco říkal a ano je to tam ale totálně to z toho nechápu, potřebuji vědět jak to má vypadat abych mohl dosazovat parametry a přísahám že jakmile dodělám tento web tak si přečtu celou tu knihu VB 2010

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prosím pomohli by jste mi s tím abych to měl už z krku plsky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

hele co říkáte na tohle???

Imports Microsoft.VisualBasic

Public Class MultyTheme
    Inherits System.Web.UI.Page
    Public Function Change_Style() As Date
        If Date.Now.Hour <= 20 And Date.Now.Hour >= 6 Then
            'kód pro nastavení stylu nočního
            Page.Theme = "Night"
        Else
            'kód pro nastavení stylu denního
            Page.Theme = "Day"
        End If
    End Function
End Class

tet už by se mi jen šiklo poradit jak to mám ten celej soubor MultyTheme.vb importovat do site.master

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1. MultiTheme a ne Multy, to je pěst na oko.

2. Proč ta funkce Change_Style vrací Date? Vždyť jen nastaví téma stránce a nic nevrací. Udělejte z toho Sub.

3. Musíte to zavolat v události PreInit, resp. v metodě OnPreInit, která událost PreInit vyvolává.

Takže tohle do té třídy přidejte:

Protected Overrides Sub OnPreInit(e As EventArgs)
    MyBase.OnPreInit(e)

    Change_Style()
End Sub

4. Aby se to použilo, musí každý stránka dědit z té vaší MultiTheme. Pokud máte kód i ASPX markup v jednom souboru, pak musíte nahoře v direktivě Page přidat Inherits MultiTheme.

Pokud máte soubory oddělené, tak v codebehindu změňte nahoře Inherits Page na Inherits MultiTheme.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

takže takto je to tedy zprávně ano

Imports Microsoft.VisualBasic

Public Class MultiTheme
    Inherits System.Web.UI.Page
    Protected Overrides Sub OnPreInit(ByVal e As EventArgs)
        MyBase.OnPreInit(e)
        If Date.Now.Hour <= 20 And Date.Now.Hour >= 6 Then
            'kód pro nastavení stylu nočního
            Page.Theme = "Night"
        Else
            'kód pro nastavení stylu denního
            Page.Theme = "Day"
        End If
        Change_Style()
    End Sub
End Class

a jen tak mimochodem chci upozornit na to Change_Style() protože se mi to podrthlo tak to asi bude chtít ještě načíst nějakou knihovnu nebo něco takového

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No teda... To si vymyslel zase super věc :D

Víš, nevím jestli se to k tobě dostalo, ale existuje webová služba zvaná "Vyhledávání". Takové vyhledávání poskytuje hned několik firem. Ale řekl bych, že asi nejlepší bude firma Google.com. Je to celkem nová firma, tak věřím, že se to ještě k tobě nedostalo...

Takže jen pro pořádek, než se pustíš do "programování" (jestli se tomu tak dá říkat), zkus jít na google.com a do vyhledávajíco pole napsat, jaký máš problém.

V tomto případě postačí: ASP.NET: Themes

- Tím samozdřejmě nechci říct, že se na forech nemáš ptát, ale napřed přemýšlej...

P.S.: Nic proti tobě :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

jo a já nechcu nic říkat tobě ale zrovta tento dotaz jsem na google.com už vyhledával a nenašle jsem tam přesně to co jsem potřeboval

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Takže zadal jsem do googlu: asp.net: themes

http://www.google.cz/#sclient=psy&hl=cs&...

Prošel jsem první čtyři odkazy. Projití těchto prvních čtyř odkazů mi zabralo asi 3 minuty, a na každé z těch 4 stránek, jsem našel, jak se mění téma pomocí programoacího jazyka...

Takže kde je problém?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud si ani neumíte přečíst to, co jsem vám napsal, tak to už je těžké. Opět opakuji - nevíte, co je to funkce, co je to proměnná, absolutně netušíte, která bije.

Kód, který jsem vám napsal, jste měl celý vzít a tak jak je, ho přidat do třídy MultiTheme. Change_Style byla vaše funkce, kterou jste si napsal.

Jestli si okamžitě nepřečtete a nenastudujete základy VB.NET, tak dostanete ban, tohle je plýtvání našeho času.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

čili do závorek vepsat tu funkci nebo nahradit to tou funkcí

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Čili nenahrazovat nic ničím, ani nic nevpisovat...

Ale naučit se základy programování...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

takže ze Site.master bych měl odstranit

<link href="App_Themes/Day/css/styles.css" media="screen" rel="stylesheet" type="text/css" />

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Pokud jste schopen vyplodit tuhle konstrukci

 Page.Theme.Length.ToString("~/App_Themes/Day/css/styles.css") 

, tak okamžitě začněte studovat základy programování, protože absolutně netušíte, co znamená kód, který píšete.

Začněte tutoriálem VB.NET pro začátečníky a zjistěte si, co je to funkce, vlastnost a třída.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ano vím potím blbyny a kr*******

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Mě by docela zajímalo, jak jsi k tomuhle vůbec dospěl?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

mno všechno pomocí intelisence

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

:D No jo no... Ono totiž intellisence není na to, aby něco naprogramovalo. Je jen od toho, aby programátorům pomohlo s hledáním příkazů.

Vůbec nevím, jak jsi přišel na to Length. Kdyby jsis to aspon přeložil do češtiny, muselo by ti být jasné, že je to blbost, která s tím nemá co dělat.

Lenght (česky: délka) označuje délku textového řetězce, kterou vrací v proměné typu int.

A metoda ToString() slouží k převedení libovolného datového typu do podoby textového řetězce. Do této metody, se až na zvláštní případy nic nevpisuje.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

mno aspoň vím že jsem udělal blbost a zítra mi stejně příjdou knížky VB.NET 2010 a C# 2010 takže se budu šprtat

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No to jsme všichni rádi. Ale jestli to bude knížka o VB.NET a C# tak proboha nemíchejte do toho ASP.NET nebo se alespoň podívejte na nějaký (video)tutoriál (např. na http://channel9.msdn.com/Tags/cz?page=9 od pana Tomáše Hercega začíná a potom jděte směrem k 1 a další najdete)! A netvrďte mi že jste se dodíval do dílu http://channel9.msdn.com/Blogs/JanSteber... (5 díl) kde je popis témat.

PS: Snažte se o lepší češtinu, vaše celkové hodnocení -60 nasvědčuje, že vaše příspěvky moc světoborné nejsou.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No já bych nerad nějak bránil tazatele - naopak.Ale myslim,že vy také nemáte co vytýkat-co si pamatuji Vaše začátky a nejenom ty,tak to taky nebylo slavné a ten váš blog je dodneška děsný!..takže klidně raďte,ale v klidu a s rozvahou - ty řeči okolo si nechte! :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, každý musí nejako začať.A začiatky nie sú nikdy ľahké.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za obranu ale on má pravdu plácám se v tom jen díky tomu že jsem do tet neměl dostatečné materiály a až tet se budu moci začít pořádně šprtat, samozřejmě nemám nic proti videotutoriálům pana Hercega ta jsem shlídl všechny ale přece jen nějaké ty obsáhlejší věci tam váženě nejsou a ty jsou v celku často potřeba

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět

Obsáhlejší věci? :D Ty neumíš změnit téma a budeš dělat obsáhlejší věci? :D

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Co???

Tohle nechápu s tím blogem "a ten váš blog je dodneška děsný!"

Promin, ale autor má v profilu napsané, že je mu 10. Mít v 10 letech vlastní blog v ASP.NET...

To nepotřebuje komentář... Radši být ticho a šoupat nohama...

Já v 10 nevěděl, co je programování...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback