Proměnná z části scriptu do kódu stránky   otázka

VB.NET, ASP.NET WebForms

Dobrý den,

asi vám to přijde jako úpný základ při tvorbě stránek v asp.net, ale nikde se mi nedaří najít návod jak se to vůbec dělá.

Jde o to že mam geleii fotek a repeater, který mi projdede adresář s fotkama a nasype mi je na stránku.

Jak to funguje z části chápu, ale sám bych to dohromady nedal.

Teď se snažím dosánout "pokusu" kdy mam několik proměnných a chci je dostat na stráku. Pomůžete mi prosím udělat příklad na kterém bych to pochopil?

Namř:

dim Integer1 as integer = 1
dim String2 as string = "String"
dim Integer2 as integer = 2  

A teď bych obsahy těchto proměnných chtel zobrazit na stránce.

Předem děkuji za radu.

Díky :)

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

Jde to udělat např. labelem,

Do VB.NET kódu stránky:

dim Integer1 as integer = 1
dim String2 as string = "String"
dim Integer2 as integer = 2  
dim dohromady as string = String.Format("{1} {0} {2} {0} {3}", vbCrLf, Integer1, String2, Integer2)

Label1.Text = dohromady

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

To nebude zrovna to co potřebuju.

Z některých proměnných se bude například skládat adresa.

Když to vzáhnu na ten repeater, tak to co nechápu je:

<%#Container.DataItem%>

Vím, že se nám do toho nasypala data.

Něco stejného se snažím dosáhnout s těma proměnnýma, ale tak abych jen neupravoval kod, ale pochopil tu funkci.

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <img src="<%#Container.DataItem%>" alt="Obrázek ze složky" />
    </ItemTemplate>
</asp:Repeater>



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

Takhle?:


    Dim str1 As String = "Ahoj!"
    Dim adresa As String = "www.stranka.cz/aplikace"
  
    Dim texts As New List(Of String)

    texts.Add(str1)
    texts.Add(adresa)

    Repeater1.DataSource = texts
    Repeater1.DataBind()

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

Tuhle ukázku kódu jsem psal tuším já.

Vlastně všechny datové komponenty v ASP.NET pracují nad kolekcí objektů - i když jim dáte SqlDataSource, dostanou jako data k zobrazení sadu nějakých objektů. Pro každý objekt se pak vygeneruje do stránky ItemTemplate a výraz Container.DataItem reprezentuje přímo daný objekt. V této ukázce byl Repeater naplněn polem nebo seznamem Stringů, Container.DataItem tedy v tomto případě vrátí ten string, ve kterém byla adresa obrázku.

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

No, tak se přiznam, že jsem asi dost vedle. Někde mam mezeru v chápání ASP :(

Přidám raději celý kod a prosím radu, zda na to celé nejdu špatně.

Mám Uploader. Zde jedny fotky nahraju do Files a stejné si automaticky zmenším a nahraju do Files/mini.

Pak v galerie.aspx Repeaterem projedu složku files/mini a necham zobrazit obrázky na stránku. Pak bych chtěl aby každá fotka měla jako odkaz na sobě fotku ze složky Files (normální velkou)


<script runat="server">
        
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        'nachystat seznam pro adresy obrázků
        Dim obrazky As New List(Of String)
        Dim obrazkym As New List(Of String)
        'projít všechny obrázky ve složce
        For Each f As String In System.IO.Directory.GetFiles(Server.MapPath("~/Files/mini"), "*.jpg")
            'zjistit název souboru
            Dim name As String = System.IO.Path.GetFileName(f)
            'poskládat URL adresu
            Dim url As String = ResolveClientUrl("~/Files/" & name)
            Dim urlM As String = ResolveClientUrl("~/Files/mini/" & name)
            'přidat ji do seznamu
            obrazky.Add(url)
            obrazkym.Add(urlM)
        Next

        'předat seznam obrázků repeateru
              
        Repeater1.DataSource = obrazkym
        Repeater1.DataBind()
      
        
    End Sub

</script>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
      <span class="NadpisStranky">
      
      Galerie

       </span>
        
        
  </asp:Content>
  
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">


  <asp:Repeater ID="Repeater1" runat="server">
   
    <ItemTemplate>
      <div class="photoList"> 
       
 'V prvnim bzch chtel mit obrayek ye slozky mini a v druhem odkaz na velkou fotku ve Files

       <a href="<%#Container.DataItem%>" TITLE="Klikkni pro zobrazení v novém okně" TARGET="_blank"><img src="<%#Container.DataItem%>"></a>  
    
     </div>
      
    </ItemTemplate>
 </asp:Repeater>

   
</asp:Content>

Chapu, že v <%#Container.DataItem%> mam prostě pole názvů, ale já bych chtěl přenášet i další data mimo repeater.

(Dovedu si představit to udělat nějak mini\<%#Container.DataItem%>

Ale to bych narazil brzo na další problém až bych jako proměnnou chtěl používat složku s názvem alba.

Moc díky za trpělivost a za případné osvětlení problému.

(Pokud jsou v ukazkovem kodu nějaké chyby, tak se omlouvám, upravoval jsem ho zde v eritoru a mohl jsem něco přehlénout)

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

V tom případě Repeater neplňte polem Stringů, ale nadeklarujte si vlastní strukturu, třeba takto:

Public Structure AlbumInfo
    Nazev As String
    Slozka As String
End Structure

Do toho seznamu pak naházejte tyto struktury. Název aktuální položky získáte z <%#Eval("Nazev")%> a <%#Eval("Slozka")#>, případně <%#Container.DataItem.Nazev%> a <%#Container.DataItem.Slozka%>.

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

Ano, psl jste ji vy. Já jsem ji jen poupravil.

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

Tak jsem prošel net a nikde jsem nenašel to co hledám (to znamená, že nejspíš chápu špatně samotnou podstatu předávání proměnných na stránku)

Mohl by mi prosím někdo přiblížit jak by vypadal kod:

do textboxu na strance napíšu třeba "Album1"

A po stisknutí buttonu1 se mi vygenerují fotky ze složky ~Files\Album1\mini

a každá fotka bude mít odkaz na fotky v originální velikosti ve složce ~Files\Album1 (Ta se zatim může otvírat v novém okně)

Neberte to tak, že bych od vás chtěl udělat celou stránku :) Ale potřebuju nějak nakopnout, protože se pořát motam kolem tohoto detailu a dokud na to nepřijdu, tak se asi nepohnu z místa :)

Díky moc Bouda

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

AAaaaa :)

Konečně jsem postoupil. Pro vás je to možná hrozně jednoduché, ale to na co jsem se celou dobu snažil dopídit je tahle maličkost :)


dim adresa as string = "Ahoj"

A v kodu stranky použít:

 <% =adresa%>

nahlásit spamnahlásit spam 0 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