page title   zodpovězená otázka

ASP.NET WebForms

Dobré odpoledne.

Vytvořil jsem si webové stránky, kde kvůli úpravám uživatele jsou veškerá data a navigační menu vytahovaná z databází. Do MasterPage.master vložil:

protected void Page_PreRender(object sender, EventArgs e)
    {
        Page.Header.Title = "Název webu | " + Page.Header.Title;
    }

Jen teď nevím, jakým způsobem dostat do jednotlivých stránek(šablon) v direktivě Page do Title hodnotu z databáze. Jestli to jde přímo nějak ve stránce pomocí Title='<%# Eval("Titulek")%>' a SqlDataSource nebo napsat dotaz v kódu a dosadit to přímo.

Předem moc děkuji za radu

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

Možnost číslo 2. Nějak takto (promiňte VB kód):

Using SCon As New SqlConnection(connection string)
 Using SCom As New SqlCommand(sql dotaz, SCon)
  'pokud by to byla první nebo jediná položka v databázi 
  SCon.Open()
   Page.Title = "Název webu | " & SCom.ExecuteScalar()
  Scon.Close()
 End Using
End Using

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

Jojo nakonec jsem se dal taky stejnou cestou a výsledek vypadá nějak takhle:

protected void Page_PreRender(object sender, EventArgs e)
    {
        //podle parametru v QueryStringu určit režim popisu stránky
if (!this.IsPostBack)
{
        string dotaz = Request.QueryString["MenuId"];
            if (string.IsNullOrEmpty(Request.QueryString["MenuId"]))
                Page.Header.Title = "Název stránky | " + Page.Header.Title;
            else
            {
                string connectionString = "Data Source=localhost;Initial Catalog=GSChWeb;" +
                    "Integrated Security=SSPI";
                SqlConnection SCon = new SqlConnection(connectionString);
                string sqlMenuDotaz = ("SELECT [MenuJmeno] FROM [NavigaceMenu] WHERE ([MenuId] = " + dotaz + ")");
                SqlCommand SCom = new SqlCommand(sqlMenuDotaz, SCon);
                SCon.Open();
                Page.Header.Title = "Název stránky | " + SCom.ExecuteScalar().ToString();
                SCon.Close();
            }        
    }
}

Takže díky za radu a problém můžu konstatovat jako vyřešený.

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

Trochu bych vám to upravil (ale musíte mít con. string ve web.config):

protected void Page_PreRender(object sender, EventArgs e)
    {
        //podle parametru v QueryStringu určit režim popisu stránky
if (!this.IsPostBack)
{
        string dotaz = Request.QueryString["MenuId"];
            if (string.IsNullOrEmpty(dotaz))
                Page.Header.Title = "Název stránky | " + Page.Header.Title;
            else
            {
                SqlConnection SCon = new SqlConnection(ConfigurationManager.ConnectionStrings("název connection stringu").ConnectionString);
                string sqlMenuDotaz = ("SELECT [MenuJmeno] FROM [NavigaceMenu] WHERE ([MenuId] = " + dotaz + ")");
                SqlCommand SCom = new SqlCommand(sqlMenuDotaz, SCon);
                SCon.Open();
                Page.Header.Title = "Název stránky | " + SCom.ExecuteScalar().ToString();
                SCon.Close();
            }        
    }
}
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jojo taky řešení. Asi bych řekl že více elegantní, protože proč psát něco, co již je jednou napsané. Nicméne na funkčnosti to ve výsledku už nic nemění ale i tak díky za podmětný návrh.

Snad jen pro úplnost, kdyby se někomu chtělo a přepsal to pomocí LINQ dotazu pro zajímavost, asi by taky neuškodilo :)

PS: Nevím jak je to teda v VB.NET ale jestli se nepletu tak ten SqlConnection by mel byt trosku jinak:

using System.Web.Configuration;

SqlConnection SCon = new SqlConnection(WebConfigurationManager.ConnectionStrings["GSChData"].ConnectionString);

Jen tak pro detail jsem přidal nahoru i deklaraci System.Web.Configuration ale to by VS nahlásilo i samo.

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