Avatar billede drakwing Nybegynder
11. maj 2003 - 18:13 Der er 36 kommentarer og
1 løsning

Hjælp til at navigerer I en Dropdownlist fra Links

Jeg har et stort problem med min side - http://www.pagter.adsl.dk/emma/billeder.aspx

Det er kort fortalt et billedgalleri som bliver generet vha. min servers fil system (der er altså ingen database)Navigationen mellem de forskellige billed katagorier består af en dropdownlist og det virker fint.

Men....

For at man skal kunne følge med i hvornår der er kommet nye billeder har jeg lavet en funktion der viser en mere detaljeret oversigt over hvilke billeder der er til rådighed på sitet.

Når man klikker på knappen "Vis oversigt" har jeg programmeret det så man får en oversigt over alle billedserier i en DataView. Det fungerer som det skal, men problemet er at man skal kunne navigerer til de forskellige
billedkatagorier ved at klikke på billedseriens navn.

For det skal kunne lade sig gøre skal man på en eller anden måde ændre og sende værdierne i dropdownlisten så de tilsvarer de værdier fra linket.

Det er lykkedes mig at ændre værdierne vha. "SelectedIndex", men da dette sker server side via en sub funktion bliver de nye værdier i dropdownlisten ikke sendt.

Jeg har ledt og ledt i alle afkroge af nettet for at finde andre eksempler på hvordan dette er gjort, men uden held.

Kan det lade sig gøre ? er der nogen der kan hjælpe ?
Avatar billede somaliomar Praktikant
16. maj 2003 - 12:33 #1
Hvordan ser koden ud i din "DropDownList_SelectedIndexChanged"-procedure? Og hvordan gør du når du ændrer i dropdownlistens SelectedIndex?

PS. Lidt tung men fed hjemEMMAside :D
Avatar billede drakwing Nybegynder
16. maj 2003 - 12:50 #2
hmm det er en lidt omstændig process og sikkert ikke helt den "rigtigt måde" at gøre det på, men jeg er 100% selvlært i asp.net så bær over med min lidt rodede kode.

Dette er min IndexChanged procedure

Sub Index_Changed(sender As Object, e As EventArgs)
'::::::::::::::::Hvis ny folder er valgt, så skal navigations menuen nulstilles

Label1.Text = "You selected"
NextPrev.Text ="Test"
NavigationsHelp.Text = "<br>Viser nu ovenstående af Emmas billedserier. Klik på de små billeder for at forstørre dem."
BindData()
End Sub

det får du dog nok ikke meget ud af, da den jo hænger meget sammen med andre dele af koden. Jeg er lidt ked af at poste hele koden (jeg har brugt lang tid på at lave den osv.) Forstår du ellers hvad det er jeg prøver at lave og hvad mit problem er ?
Avatar billede drakwing Nybegynder
16. maj 2003 - 12:52 #3
glemte helt, tak for de fine ord om siden, tror mest den er tung fordi jeg hoster den selv på en gammel pc med en delt adsl 256/128 forbindelse (-:
Avatar billede drakwing Nybegynder
16. maj 2003 - 13:00 #4
SelectedIndex ændrer jeg ved denne procedure

Public Sub SelectFolderFromOverview(Src As Object, Args As CommandEventArgs)
    Dim SelectedFolder as String = Args.CommandArgument
    ShowFolders.SelectedIndex = ShowFolders.Items.IndexOf(ShowFolders.Items.FindByValue(SelectedFolder))
End Sub
Avatar billede somaliomar Praktikant
16. maj 2003 - 13:09 #5
Jeg forstår godt, hvad det er du prøver at lave. Men jeg kan ikke se hvad problemet er !

Et skud i tågen. Prøv at kalde BindData() fra SelectFolderFromOverview:

Public Sub SelectFolderFromOverview(Src As Object, Args As CommandEventArgs)
    Dim SelectedFolder as String = Args.CommandArgument
    ShowFolders.SelectedIndex = ShowFolders.Items.IndexOf(ShowFolders.Items.FindByValue(SelectedFolder))
    BindData()
End Sub
Avatar billede drakwing Nybegynder
16. maj 2003 - 13:41 #6
ja det nettop her problmet opstår for hele min BinData() er indkapslet i en if statement...

If  not Request("ShowFolders")="" and not Request("ShowFolders")="Vælg en af Emmas Fotoserier" Then

som gør at dropdownlisten skal være submittet med en value - og det bliver den åbenbart ikke når man bruger " SelectedIndex"

og man kan ikke sætte en Request - altså i dette tilfælde Request("ShowFolders") fordi et er en "protected et eller andet) (-:
Avatar billede somaliomar Praktikant
16. maj 2003 - 14:58 #7
Forstår det ikke. Kan du paste koden til BindData her?
Avatar billede drakwing Nybegynder
16. maj 2003 - 15:30 #8
Ok, det er der nok ingen vej uden om så-
her er den, håber du kan hjælpe så

Public Sub BindData()

':::::::::::::::Hvis brugeren er gået tilbage til startsiden skal der ikke vises oversigt over billeder


   
If Request("ShowFolders")="Vælg en af Emmas Fotoserier"  Then
   
    OverViewList.visible=true
    Mydatagrid.DataSource = ""
    Mydatagrid.DataBind
   
    Pagenumbers.DataSource = ""
    Pagenumbers.DataBind
   
    VisAntalSider.Text = ""
    VisAktuelSide.Text = ""
    VisAntal.Text =""
   
    NextPrev.Text ="Test"
   
    NavigationsHelp.Text = "<span class='normtekst'><br><br>Hejsa, det er så her jeg viser lidt billeder af mig og min famile.<br>For at gøre det lidt lettere at finde de billeder du gerne vil se, har jeg fået min far til, at opdele de billeder ham og mor har taget af mig, i nogle fotoserier.<br>Du kan vælge hvilken serie du gerne vil se billeder fra ved at bruge menuen ovenfor.<br>Rigtig god fornøjelse<br><br><b>Kærlig hilsen Emma</b></span>"
    PrevItem.visible = false
    NextItem.visible = false
    OverViewList.visible=false
    ShowOverviewButton.visible=true   
end if
   
If  not Request("ShowFolders")="" and not Request("ShowFolders")="Vælg en af Emmas Fotoserier" Then
OverViewList.visible=false
ShowOverviewButton.visible=false
PrevItem.visible = true
NextItem.visible = true




   
'::::::::::::::Lav et Dataset som indeholder fil navne

Dim storefile As directory
Dim directory As String
Dim files As String()
Dim File As String

files = storefile.GetFiles("C:\mywebsite\emma\billeder\" & Request("ShowFolders"), "*")

    Dim myDataSet as New DataSet()
    myDataSet.Tables.Add(New DataTable("filinfo"))
    myDataSet.Tables("filinfo").Columns.Add("Filnavn")
    myDataSet.Tables("filinfo").Columns.Add("Filtype")
   
   

   
        For Each File In files
            Dim filnavn as string = System.IO.Path.GetFileName(File)
            Dim row As DataRow = myDataSet.Tables("filinfo").NewRow
            If Left(filnavn, 2) = "T_" then
                    row(0) = filnavn
                    myDataSet.Tables("filinfo").Rows.Add(row)
                end if
        Next



':::::::::::::::::Lav et nyt dataset med paging

    Dim Sidenummer As String

    If NextPrev.Text = "Test" then
        Sidenummer  = Request("Pagenumbers")
    else
        Sidenummer  = NextPrev.Text
    end if


    Dim intVisPerSide As Integer = 10
   
    Dim intMaxRecords As Integer
    Dim intRecordCount as String = CStr(myDataSet.Tables(0).Rows.Count)   
    Dim intPageCount As Integer = Math.Ceiling(intRecordCount / intVisPerSide)
    Dim intLastPageItemCount As Integer = (intRecordCount Mod intVisPerSide)
    Dim intPageNumber As Integer
      Dim intStartRow As Integer
     
      Dim PagedDataSet as New DataSet()
          PagedDataSet.Tables.Add(New DataTable("filinfo"))
    PagedDataSet.Tables("filinfo").Columns.Add("Filnavn")
    PagedDataSet.Tables("filinfo").Columns.Add("Filtype")
     
      Dim NewDataTable As DataTable = PagedDataSet.Tables("filinfo")
      Dim OldDataTable As DataTable = myDataSet.Tables("filinfo")
     
    Dim y As Integer
    Dim x As Integer
   
    If Request("Pagenumbers") = "" Or Request("Pagenumbers") = "1" And NextPrev.Text = "Test"  Or Label1.Text = "You selected"  Then
        intPageNumber = 1
        intStartRow = 0
    Else
        intPageNumber = CType(Sidenummer , Integer)
        intStartRow = ((intPageNumber - 1) * intVisPerSide)
    End if
               
   
    If intPageCount <> intPageNumber then
        intMaxRecords = intVisPerSide - 1
    Else
        intMaxRecords =intLastPageItemCount -1
    End if
   

        For x = intStartRow To (intStartRow + intMaxRecords)
            NewDataTable.ImportRow(OldDataTable.Rows(x))
        Next
       
       
Mydatagrid.DataSource = PagedDataSet.Tables("filinfo").DefaultView
Mydatagrid.DataBind

'::::::::::::::Skriv side info til clienten:::

VisAntalSider.Text = "af " & intPageCount
VisAktuelSide.Text = "Side "&intPageNumber     
VisAntal.Text = intRecordCount & " Billeder"       

'::::::::::::::::Lav en oversigt over hvor mange sider der er


If Label1.Text = "You selected" then
    Dim ListPagenumbers As New ArrayList
    For x = 1 to intPageCount
        ListPagenumbers.Add(x)
    Next
    ListPagenumbers.TrimToSize()
    Pagenumbers.DataSource = ListPagenumbers
    Pagenumbers.DataBind
   
    Pagenumbers.SelectedIndex = 0
end if
   
     

End If

':::::::::::::Lav en liste over billed foldere 
If Request("ShowFolders")="" Then
dim Dir as string
dim Subdirs() as string
Subdirs = Directory.GetDirectories("C:\mywebsite\emma\billeder\")
Dim FolderList As New ArrayList
FolderList.Add ("Vælg en af Emmas Fotoserier")
For Each Dir in Subdirs
    Dim foldernavn as string = System.IO.Path.GetFileName(Dir)   
      FolderList.Add (foldernavn)
Next
FolderList.TrimToSize()
ShowFolders.DataSource = FolderList
ShowFolders.DataBind
end if

End Sub
Avatar billede somaliomar Praktikant
16. maj 2003 - 15:36 #9
Umiddelbart kan jeg ikke se noget galt med ovenstående kode. Har du prøvet det her:

Public Sub SelectFolderFromOverview(Src As Object, Args As CommandEventArgs)
    Dim SelectedFolder as String = Args.CommandArgument
    ShowFolders.SelectedIndex = ShowFolders.Items.IndexOf(ShowFolders.Items.FindByValue(SelectedFolder))
    BindData()
End Sub
Avatar billede drakwing Nybegynder
16. maj 2003 - 15:43 #10
jep, det er koden som den virker nu på siden, jeg tror problemet er at den if statement der er under bindata siger at koden kun skal eksekverers hvis Request("ShowFolders") (som er dropdownlisten) IKKE = "", hvilket den åbenbart bliver når man bruger SelectedIndex til at vælge et nyt item i dropdownlisten
Avatar billede somaliomar Praktikant
16. maj 2003 - 17:39 #11
Prøv det her work-around:

    Public Sub BindData()

        ':::::::::::::::Hvis brugeren er gået tilbage til startsiden skal der ikke vises oversigt over billeder


        Dim RequestedFolder As String = ShowFolders.SelectedItem.ToString

        If RequestedFolder = "Vælg en af Emmas Fotoserier" Then

            OverViewList.visible = True
            Mydatagrid.DataSource = ""
            Mydatagrid.DataBind()

            Pagenumbers.DataSource = ""
            Pagenumbers.DataBind()

            VisAntalSider.Text = ""
            VisAktuelSide.Text = ""
            VisAntal.Text = ""

            NextPrev.Text = "Test"

            NavigationsHelp.Text = "<span class='normtekst'><br><br>Hejsa, det er så her jeg viser lidt billeder af mig og min famile.<br>For at gøre det lidt lettere at finde de billeder du gerne vil se, har jeg fået min far til, at opdele de billeder ham og mor har taget af mig, i nogle fotoserier.<br>Du kan vælge hvilken serie du gerne vil se billeder fra ved at bruge menuen ovenfor.<br>Rigtig god fornøjelse<br><br><b>Kærlig hilsen Emma</b></span>"
            PrevItem.visible = False
            NextItem.visible = False
            OverViewList.visible = False
            ShowOverviewButton.visible = True
        End If

        If Not RequestedFolder = "" And Not RequestedFolder = "Vælg en af Emmas Fotoserier" Then
            OverViewList.visible = False
            ShowOverviewButton.visible = False
            PrevItem.visible = True
            NextItem.visible = True





            '::::::::::::::Lav et Dataset som indeholder fil navne

            Dim storefile As directory
            Dim directory As String
            Dim files As String()
            Dim File As String

            files = storefile.GetFiles("C:\mywebsite\emma\billeder\" & Request("ShowFolders"), "*")

            Dim myDataSet As New DataSet()
            myDataSet.Tables.Add(New DataTable("filinfo"))
            myDataSet.Tables("filinfo").Columns.Add("Filnavn")
            myDataSet.Tables("filinfo").Columns.Add("Filtype")




            For Each File In files
                Dim filnavn As String = System.IO.Path.GetFileName(File)
                Dim row As DataRow = myDataSet.Tables("filinfo").NewRow
                If Left(filnavn, 2) = "T_" Then
                    row(0) = filnavn
                    myDataSet.Tables("filinfo").Rows.Add(row)
                End If
            Next



            ':::::::::::::::::Lav et nyt dataset med paging

            Dim Sidenummer As String

            If NextPrev.Text = "Test" Then
                Sidenummer = Request("Pagenumbers")
            Else
                Sidenummer = NextPrev.Text
            End If


            Dim intVisPerSide As Integer = 10

            Dim intMaxRecords As Integer
            Dim intRecordCount As String = CStr(myDataSet.Tables(0).Rows.Count)
            Dim intPageCount As Integer = Math.Ceiling(intRecordCount / intVisPerSide)
            Dim intLastPageItemCount As Integer = (intRecordCount Mod intVisPerSide)
            Dim intPageNumber As Integer
            Dim intStartRow As Integer

            Dim PagedDataSet As New DataSet()
            PagedDataSet.Tables.Add(New DataTable("filinfo"))
            PagedDataSet.Tables("filinfo").Columns.Add("Filnavn")
            PagedDataSet.Tables("filinfo").Columns.Add("Filtype")

            Dim NewDataTable As DataTable = PagedDataSet.Tables("filinfo")
            Dim OldDataTable As DataTable = myDataSet.Tables("filinfo")

            Dim y As Integer
            Dim x As Integer

            If Request("Pagenumbers") = "" Or Request("Pagenumbers") = "1" And NextPrev.Text = "Test" Or Label1.Text = "You selected" Then
                intPageNumber = 1
                intStartRow = 0
            Else
                intPageNumber = CType(Sidenummer, Integer)
                intStartRow = ((intPageNumber - 1) * intVisPerSide)
            End If


            If intPageCount <> intPageNumber Then
                intMaxRecords = intVisPerSide - 1
            Else
                intMaxRecords = intLastPageItemCount - 1
            End If


            For x = intStartRow To (intStartRow + intMaxRecords)
                NewDataTable.ImportRow(OldDataTable.Rows(x))
            Next


            Mydatagrid.DataSource = PagedDataSet.Tables("filinfo").DefaultView
            Mydatagrid.DataBind()

            '::::::::::::::Skriv side info til clienten:::

            VisAntalSider.Text = "af " & intPageCount
            VisAktuelSide.Text = "Side " & intPageNumber
            VisAntal.Text = intRecordCount & " Billeder"

            '::::::::::::::::Lav en oversigt over hvor mange sider der er


            If Label1.Text = "You selected" Then
                Dim ListPagenumbers As New ArrayList()
                For x = 1 To intPageCount
                    ListPagenumbers.Add(x)
                Next
                ListPagenumbers.TrimToSize()
                Pagenumbers.DataSource = ListPagenumbers
                Pagenumbers.DataBind()

                Pagenumbers.SelectedIndex = 0
            End If



        End If

        ':::::::::::::Lav en liste over billed foldere 
        If Request("ShowFolders") = "" Then
            Dim Dir As String
            Dim Subdirs() As String
            Subdirs = directory.GetDirectories("C:\mywebsite\emma\billeder\")
            Dim FolderList As New ArrayList()
            FolderList.Add("Vælg en af Emmas Fotoserier")
            For Each Dir In Subdirs
                Dim foldernavn As String = System.IO.Path.GetFileName(Dir)
                FolderList.Add(foldernavn)
            Next
            FolderList.TrimToSize()
            ShowFolders.DataSource = FolderList
            ShowFolders.DataBind()
        End If

    End Sub
Avatar billede drakwing Nybegynder
16. maj 2003 - 17:47 #12
får denne fejl

Object reference not set to an instance of an object.
Avatar billede somaliomar Praktikant
16. maj 2003 - 17:48 #13
Hvor?
Avatar billede somaliomar Praktikant
16. maj 2003 - 17:49 #14
Prøv at erstatte linjen

Dim RequestedFolder As String = ShowFolders.SelectedItem.ToString

med

Dim RequestedFolder As String = ""
RequestedFolder = ShowFolders.SelectedItem.ToString
Avatar billede drakwing Nybegynder
16. maj 2003 - 17:50 #15
niks samme fejl )-:
Avatar billede somaliomar Praktikant
16. maj 2003 - 17:51 #16
På hvilken linje opstår fejlen?
Avatar billede drakwing Nybegynder
16. maj 2003 - 17:52 #17
den linje hvor jeg insætter
Dim RequestedFolder As String = ShowFolders.SelectedItem.ToString
eller
Dim RequestedFolder As String = ""
RequestedFolder = ShowFolders.SelectedItem.ToString
Avatar billede somaliomar Praktikant
16. maj 2003 - 17:53 #18
Hmm... Prøv det her

Dim RequestedFolder As String
Avatar billede drakwing Nybegynder
16. maj 2003 - 17:54 #19
jo det virker
Avatar billede drakwing Nybegynder
16. maj 2003 - 17:56 #20
men det er jo bare en tom variabel
Avatar billede somaliomar Praktikant
16. maj 2003 - 17:57 #21
Jep, det er rigtigt. Prøv at se om det her virker

    Dim RequestedFolder As String
    RequestedFolder = ShowFolders.SelectedItem.ToString
Avatar billede drakwing Nybegynder
16. maj 2003 - 17:59 #22
sorry - samme fejl - kan det være fordi SelectedItem ikke er sat for dropdownlisten når man åbner siden
Avatar billede somaliomar Praktikant
16. maj 2003 - 18:22 #23
Jeg har lige lavet en test side der ser sådan ud:

<form id="Form1" method="post" runat="server">
    <asp:DropDownList id="ShowFolders" runat="server" AutoPostBack="True">
        <asp:ListItem Value="Option 1">Option 1</asp:ListItem>
        <asp:ListItem Value="Option 2">Option 2</asp:ListItem>
        <asp:ListItem Value="Option 3">Option 3</asp:ListItem>
    </asp:DropDownList>
    <asp:Button id="Button1" runat="server" Text="Option 2" /><br>
    <asp:Label id="Label1" runat="server" />
</form>

med flg. kode

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        BindData()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ShowFolders.SelectedIndex = 1
        BindData()
    End Sub

    Public Sub BindData()
        Dim RequestedFolder As String = ShowFolders.SelectedItem.Text

        If RequestedFolder = "Option 1" Then
            Label1.Text = "Option 1.Selected"
        End If

        If RequestedFolder <> "" And RequestedFolder <> "Option 1" Then
            Label1.Text = "Other.Selected"
        End If
    End Sub


Det virker perfekt !
Avatar billede drakwing Nybegynder
16. maj 2003 - 18:33 #24
nu bliver min dropdownlist jo generet dynamisk tror du ikke det gør en forskel
Avatar billede somaliomar Praktikant
16. maj 2003 - 18:35 #25
Hmm... Det kan godt ske. Jeg prøver lige noget andet...
Avatar billede somaliomar Praktikant
16. maj 2003 - 18:43 #26
Jeg prøvede at generere data i dropdownlisten dynamisk sådan her

    Public Sub BindData()
        'Får fejlen: Object reference not set to an instance of an object.
        Dim RequestedFolder As String = ShowFolders.SelectedItem.Text

        If Not Page.IsPostBack Then
            ShowFolders.Items.Add("Option 1")
            ShowFolders.Items.Add("Option 2")
            ShowFolders.Items.Add("Option 3")
        End If

        If RequestedFolder = "Option 1" Then
            Label1.Text = "Option 1.Selected"
        End If

        If RequestedFolder <> "" And RequestedFolder <> "Option 1" Then
            Label1.Text = "Other.Selected"
        End If
    End Sub

men hvis jeg skriver sådan her virker det perfekt

    Public Sub BindData()
        If Not Page.IsPostBack Then
            ShowFolders.Items.Add("Option 1")
            ShowFolders.Items.Add("Option 2")
            ShowFolders.Items.Add("Option 3")
        End If

        Dim RequestedFolder As String = ShowFolders.SelectedItem.Text

        If RequestedFolder = "Option 1" Then
            Label1.Text = "Option 1.Selected"
        End If

        If RequestedFolder <> "" And RequestedFolder <> "Option 1" Then
            Label1.Text = "Other.Selected"
        End If
    End Sub
Avatar billede drakwing Nybegynder
16. maj 2003 - 18:44 #27
hmm tror næsten den er der nu, et af problemernu var at min dropdownliste først blev generet efter efter jeg prøvede at lave "Dim RequestedFolder As String = ShowFolders.SelectedItem.Text
"
Du må gerne få point nu hvis du vil du har været MEGET hjælpsom og jeg takker mange mange.

Hvorfor det stadig ikke virker helt, finder jeg nok ud af en gang (-:

Bare lav et svar og jeg giver dig point (hvis jeg kan finde ud af det)
Avatar billede somaliomar Praktikant
16. maj 2003 - 18:45 #28
Har du løst problemet? Hvad har du gjort?
Avatar billede somaliomar Praktikant
16. maj 2003 - 18:49 #29
Ups... Prøv at erstatte

Dim RequestedFolder As String = ShowFolders.SelectedItem.ToString

med

Dim RequestedFolder As String
If Not ShowFolders.SelectedItem Is Nothing Then
    RequestedFolder = ShowFolders.SelectedItem.Text
End If
Avatar billede drakwing Nybegynder
16. maj 2003 - 18:53 #30
hvorfor det, det giver da samme resultat
Avatar billede somaliomar Praktikant
16. maj 2003 - 18:56 #31
Jeg får ikke fejl hvis min test-kode ser sådan ud:

        Dim RequestedFolder As String
        If Not ShowFolders.SelectedItem Is Nothing Then
            RequestedFolder = ShowFolders.SelectedItem.Text
        End If


        If Not Page.IsPostBack Then
            ShowFolders.Items.Add("Option 1")
            ShowFolders.Items.Add("Option 2")
            ShowFolders.Items.Add("Option 3")
        End If

        RequestedFolder = ShowFolders.SelectedItem.Text

        If RequestedFolder = "Option 1" Then
            Label1.Text = "Option 1.Selected"
        End If

        If RequestedFolder <> "" And RequestedFolder <> "Option 1" Then
            Label1.Text = "Other.Selected"
        End If
Avatar billede drakwing Nybegynder
16. maj 2003 - 18:58 #32
Juhuuuuu det virker, gider du at test og melde tilbage, så sætter jeg lige pointen op  - du fortjener mere
Avatar billede drakwing Nybegynder
16. maj 2003 - 18:59 #33
jeg brugte en session variable - flyttede placeringen af dropdownlist koden og brugte ellers de par linjer kode du kom med og vupti nu virker det
Avatar billede somaliomar Praktikant
16. maj 2003 - 19:02 #34
Jep, det virker også på min computer :D
Kan jeg få lov til at se koden, der løser dit problem?
Avatar billede drakwing Nybegynder
16. maj 2003 - 19:06 #35
Ok du hjalp mig til at hjælpe mig selv - LOL sådan er det nogle gange det er til at blive skør over at side med en kode der ikke virker, altid rart når andre kigger på der.

Public Sub BindData()


':::::::::::::Lav en liste over billed foldere 
If Request("ShowFolders")="" Then
dim Dir as string
dim Subdirs() as string
Subdirs = Directory.GetDirectories("C:\mywebsite\emma\billeder\")
Dim FolderList As New ArrayList
FolderList.Add ("Vælg en af Emmas Fotoserier")
For Each Dir in Subdirs
    Dim foldernavn as string = System.IO.Path.GetFileName(Dir)   
      FolderList.Add (foldernavn)
Next
FolderList.TrimToSize()
ShowFolders.DataSource = FolderList
ShowFolders.DataBind
end if



':::::::::::::::Hvis brugeren er gået tilbage til startsiden skal der ikke vises oversigt over billeder


'Dim RequestedFolder As String = ShowFolders.SelectedItem.ToString

Dim RequestedFolder As String
If Not ShowFolders.SelectedItem Is Nothing Then
    RequestedFolder = ShowFolders.SelectedItem.Text
    session("RequestedF") = RequestedFolder
End If
   
If Request("ShowFolders")="Vælg en af Emmas Fotoserier"  Then
   
    OverViewList.visible=true
    Mydatagrid.DataSource = ""
    Mydatagrid.DataBind
   
    Pagenumbers.DataSource = ""
    Pagenumbers.DataBind
   
    VisAntalSider.Text = ""
    VisAktuelSide.Text = ""
    VisAntal.Text =""
   
    NextPrev.Text ="Test"
   
    NavigationsHelp.Text = "<span class='normtekst'><br><br>Hejsa, det er så her jeg viser lidt billeder af mig og min famile.<br>For at gøre det lidt lettere at finde de billeder du gerne vil se, har jeg fået min far til, at opdele de billeder ham og mor har taget af mig, i nogle fotoserier.<br>Du kan vælge hvilken serie du gerne vil se billeder fra ved at bruge menuen ovenfor.<br>Rigtig god fornøjelse<br><br><b>Kærlig hilsen Emma</b></span>"
    PrevItem.visible = false
    NextItem.visible = false
    OverViewList.visible=false
    ShowOverviewButton.visible=true   
end if
   
If  not RequestedFolder="" and not RequestedFolder="Vælg en af Emmas Fotoserier" Then
NavigationsHelp.Text = "<br>Viser nu ovenstående af Emmas billedserier. Klik på de små billeder for at forstørre dem."
OverViewList.visible=false
ShowOverviewButton.visible=false
PrevItem.visible = true
NextItem.visible = true




   
'::::::::::::::Lav et Dataset som indeholder fil navne

Dim storefile As directory
Dim directory As String
Dim files As String()
Dim File As String

files = storefile.GetFiles("C:\mywebsite\emma\billeder\" & RequestedFolder, "*")

    Dim myDataSet as New DataSet()
    myDataSet.Tables.Add(New DataTable("filinfo"))
    myDataSet.Tables("filinfo").Columns.Add("Filnavn")
    myDataSet.Tables("filinfo").Columns.Add("Filtype")
   
   

   
        For Each File In files
            Dim filnavn as string = System.IO.Path.GetFileName(File)
            Dim row As DataRow = myDataSet.Tables("filinfo").NewRow
            If Left(filnavn, 2) = "T_" then
                    row(0) = filnavn
                    myDataSet.Tables("filinfo").Rows.Add(row)
                end if
        Next



':::::::::::::::::Lav et nyt dataset med paging

    Dim Sidenummer As String

    If NextPrev.Text = "Test" then
        Sidenummer  = Request("Pagenumbers")
    else
        Sidenummer  = NextPrev.Text
    end if


    Dim intVisPerSide As Integer = 10
   
    Dim intMaxRecords As Integer
    Dim intRecordCount as String = CStr(myDataSet.Tables(0).Rows.Count)   
    Dim intPageCount As Integer = Math.Ceiling(intRecordCount / intVisPerSide)
    Dim intLastPageItemCount As Integer = (intRecordCount Mod intVisPerSide)
    Dim intPageNumber As Integer
      Dim intStartRow As Integer
     
      Dim PagedDataSet as New DataSet()
          PagedDataSet.Tables.Add(New DataTable("filinfo"))
    PagedDataSet.Tables("filinfo").Columns.Add("Filnavn")
    PagedDataSet.Tables("filinfo").Columns.Add("Filtype")
     
      Dim NewDataTable As DataTable = PagedDataSet.Tables("filinfo")
      Dim OldDataTable As DataTable = myDataSet.Tables("filinfo")
     
    Dim y As Integer
    Dim x As Integer
   
    If Request("Pagenumbers") = "" Or Request("Pagenumbers") = "1" And NextPrev.Text = "Test"  Or Label1.Text = "You selected"  Then
        intPageNumber = 1
        intStartRow = 0
    Else
        intPageNumber = CType(Sidenummer , Integer)
        intStartRow = ((intPageNumber - 1) * intVisPerSide)
    End if
               
   
    If intPageCount <> intPageNumber then
        intMaxRecords = intVisPerSide - 1
    Else
        intMaxRecords =intLastPageItemCount -1
    End if
   

        For x = intStartRow To (intStartRow + intMaxRecords)
            NewDataTable.ImportRow(OldDataTable.Rows(x))
        Next
       
       
Mydatagrid.DataSource = PagedDataSet.Tables("filinfo").DefaultView
Mydatagrid.DataBind

'::::::::::::::Skriv side info til clienten:::

VisAntalSider.Text = "af " & intPageCount
VisAktuelSide.Text = "Side "&intPageNumber     
VisAntal.Text = intRecordCount & " Billeder"       

'::::::::::::::::Lav en oversigt over hvor mange sider der er


If Label1.Text = "You selected" then
    Dim ListPagenumbers As New ArrayList
    For x = 1 to intPageCount
        ListPagenumbers.Add(x)
    Next
    ListPagenumbers.TrimToSize()
    Pagenumbers.DataSource = ListPagenumbers
    Pagenumbers.DataBind
   
    Pagenumbers.SelectedIndex = 0
end if
   
     

End If



End Sub


'::::::::::::::::::::::::::::::::::::Vis billede efter tryk på thumbnail
Public Sub ShowBig(Src As Object, Args As CommandEventArgs)
    Dim test as String = Args.CommandArgument
    test = Replace(test, "T_", "")
    image.Text = test
    ShowImage.visible=true
    ShowThumbs.visible=false
End Sub


':::::::::::::::::::::::::::::::::.Funktion til Oversigt over alle billeder på sitet
Public Sub ShowOverview(sender As Object, e As System.EventArgs)
OverViewList.visible=true
NavigationsHelp.Text = "<span class='normtekst'><br><br>Her er en oversigt over alle billederne på min hjemmeside</span>"
dim Dir as string
dim Subdirs() as string
Subdirs = Directory.GetDirectories("C:\mywebsite\emma\billeder\")
Dim FolderList As New ArrayList
Dim OverviewDataSet as New DataSet()
OverviewDataSet.Tables.Add(New DataTable("filinfo"))
OverviewDataSet.Tables("filinfo").Columns.Add("Foldernavn")
OverviewDataSet.Tables("filinfo").Columns.Add("Imagenumbers")
OverviewDataSet.Tables("filinfo").Columns.Add("Updates")
OverviewDataSet.Tables("filinfo").Columns.Add("NewImage")



For Each Dir in Subdirs
    Dim foldernavn as string = System.IO.Path.GetFileName(Dir)
   
   
    Dim storefile As directory
    Dim directory As String
    Dim files As String()
    Dim File As String
    Dim ImageCounter As String
    Dim NumberUpdates As String = 0
    Dim NewImage As String
    files = storefile.GetFiles("C:\mywebsite\emma\billeder\" & foldernavn, "*")

        For Each File In files
            Dim filnavn as string = System.IO.Path.GetFileName(File)
            Dim fInfo = new FileInfo(File)
            Dim CreationDate as DateTime= fInfo.CreationTime
           
            If Left(filnavn, 2) = "T_" then
           
            if DateDiff("d", CreationDate, now ) < 7 then
                NumberUpdates = NumberUpdates +1
                NewImage = "<img src='gfx/new.gif'>"
            end if
           
            ImageCounter = ImageCounter +1
            End if
        Next
   
    Dim row As DataRow = OverviewDataSet.Tables("filinfo").NewRow
    row(0) = foldernavn
    row(1) = ImageCounter
    row(2) = NumberUpdates
    row(3) = NewImage
        OverviewDataSet.Tables("filinfo").Rows.Add(row)
   
    ImageCounter = 0
    NumberUpdates = 0
    NewImage = ""

Next

FolderList.TrimToSize()
Dim myDataView as DataView = OverviewDataSet.Tables("filinfo").DefaultView
myDataView.Sort = "foldernavn ASC"
Overview.DataSource = myDataView
Overview.DataBind

End Sub
Avatar billede somaliomar Praktikant
16. maj 2003 - 19:18 #36
Hehehe... Var det ikke dig, der ikke havde så meget til overs for at paste din kode her?

Tak for points :D

/Omar
Avatar billede drakwing Nybegynder
16. maj 2003 - 19:28 #37
np -
Jo til det med koden, men hva fand'n så super speciel er den jo heller ikke og jeg håber da ikke der er så mange kode tyve der smutter forbi dette indlæg, så det går nok (-:

DW
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester