Avatar billede ha9953 Nybegynder
03. januar 2004 - 20:47 Der er 4 kommentarer og
1 løsning

nye problemer med postback og datagrid

Jeg har nu fået følgende custom control til atvirke også ved postback på siden. Men når jeg så bruger f.eks sorter og paging i datagrid så vises billederne ikke - er der nogen der kan se fejlen

Customcontrol:

Option Explicit
Option Strict

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Microsoft.VisualBasic
Imports System.Text.RegularExpressions
Imports System.IO
Imports System.Data
Imports System.Data.OleDB
Imports System.Configuration
Imports System.XML
Imports System.Drawing
Imports System.Drawing.Imaging

Namespace Edtwodth

    Public Class FotoHojdeBredde
        Inherits System.Web.ui.webcontrols.Image

        Dim Meddel as new Meddel()
        Dim Div as new Diverse()
       
        Protected _MaxHojde as integer = 100
        Protected _MaxBredde as integer    = 100
        Protected _FotoSti as string           
               
        Public Property MaxHojde() As integer       
            Get
                Return _MaxHojde
            End Get
            Set(ByVal Value As integer)           
                _MaxHojde = Value           
            End Set       
        End Property

        Public Property MaxBredde() As integer       
            Get
                Return _MaxBredde
            End Get
            Set(ByVal Value As integer)           
                _MaxBredde = Value           
            End Set       
        End Property

        Public Property FotoSti() As string       
            Get
                Return _FotoSti
            End Get
            Set(ByVal Value As string)           
                _FotoSti = Value           
            End Set       
        End Property
       
        Protected Overrides Sub Onload (e as eventargs)
            MyBase.Onload(e)
                       
            If ViewState ("Maxbredde") is Nothing then
                ViewState("Maxbredde") = Me.MaxBredde
            end if
            If ViewState ("MaxHojde") is Nothing then
                ViewState("MaxHojde") = Me.MaxHojde
            end if
            If ViewState ("FotoSti") is Nothing then
                ViewState("FotoSti") = Me.FotoSti
            end if

            If ViewState ("FotoSti") is Nothing then
                me.visible = false
                return
            end if

           
            Dim bredde, hojde, sti as string
            Bredde = ViewState("Maxbredde").tostring()            
            Hojde = ViewState("MaxHojde").tostring()            
            Sti = ViewState("FotoSti").tostring()                

            Dim FotoServer as string
            Dim FotoWeb as string
            FotoServer = ConfigurationSettings.AppSettings("server") & sti
            FotoWeb = Div.Web & Sti

            If File.Exists(FotoServer) Then
                Dim currentImage as System.Drawing.Image = System.Drawing.Image.fromfile(FotoServer)
                Dim imgHeight as integer = currentImage.Height
                Dim imgWidth as integer = currentImage.Width                   
   
                if imgwidth > Convert.ToInt32(Bredde) then
                    do
                        imgheight = Convert.ToInt32(imgheight * 0.9)
                        imgwidth = Convert.ToInt32(imgwidth  * 0.9)
                    loop while imgwidth > Convert.ToInt32(Bredde)
                end if
                if imgheight > Convert.ToInt32(Hojde) then
                    do
                        imgheight = Convert.ToInt32(imgheight * 0.9)
                        imgwidth = Convert.ToInt32(imgwidth  * 0.9)
                    loop while imgheight > Convert.ToInt32(Hojde)
                end if
   
                me.width = new Unit (imgwidth)
                me.height = new Unit (imgheight)

                me.ImageUrl= FotoWeb
            Else
                Me.Visible = false
            End If   


            HttpContext.Current.response.write(FotoServer & "<br/>" & FotoWeb & "<br/>" )


        end sub

    End Class


end namespace

Datagrid og funktioner:

    Sub Fyld_DgFoto()
        'DgFoto.CurrentPageIndex = 0
        GridFoto.GridDan("SELECT * FROM fotooversigt;","foto",DgFoto)
    end sub

    Sub GridSide_DgFoto(S As object, E as DataGridPageChangedEventArgs)
        DgFoto.CurrentPageIndex = E.NewPageIndex
        Fyld_DgFoto()
    end sub

    Sub Gridsorter_DgFoto(Source As Object, E As DataGridSortCommandEventArgs)
        GridFoto.Sortnavn = E.SortExpression
        Fyld_DgFoto()
    end sub

    public function fotofil(nummer)
        dim udtrukket as string
        Data.OpenDB("foto")
            Data.DanData("SELECT fotooversigt.*, fotokategori.* FROM fotooversigt,fotokategori WHERE fotooversigt.kategoriid = fotokategori.kategoriid AND fotoid=" & nummer & ";")
            If Data.Data.Read() then
                udtrukket = "testfoto/" & Data.Data("fotokategori.navn").tostring() & "/" & Data.Data("filnavn").tostring()
            End If
        Data.CloseDB
        return udtrukket
    end function   

        <asp:datagrid id="DgFoto" AutoGenerateColumns="false" AllowSorting="True" OnSortCommand="Gridsorter_DgFoto" Width="100%" runat="server" GridLines="Horizontal" CellPadding="3" AllowPaging="True" PageSize="3" OnpageIndexChanged="GridSide_DgFoto" >
            <columns>
                <asp:TemplateColumn HeaderText="Beskrivelse">
                    <ItemTemplate>                                                                                                                                                                                                   
                        <%# Container.DataItem("FotoID") %>
                        <Edtwodth:fotohojdeBredde id="foto" FotoSti='<%# FotoFil(Container.DataItem("Fotoid")) %>' Maxbredde="120" MaxHojde="130" runat="server"/>
                    </ItemTemplate>
                </asp:TemplateColumn>
            </columns>
        </asp:datagrid>
Avatar billede roger Nybegynder
04. januar 2004 - 06:34 #1
Tror du skal gøre lidt mere ud af det spørgsmål....jeg kan hverken finde hoved eller hale i den kode. Mangler vi ikke at se en del ?
Avatar billede ha9953 Nybegynder
04. januar 2004 - 10:26 #2
noop - alt koden er der - men jeg kan da forsøge at uddybe ? lidt: Mit problem er at min footfunktion vælger at sætte visible = false når jeg i en datagrid bruger paging og går til f.eks side 2. Jeg kan ikke rigtigt forklare det bedre...
Avatar billede roger Nybegynder
04. januar 2004 - 18:03 #3
Så må jeg melde pass.

footfunktion ? Hvem, Hvad, Hvor?

Og hvor er den her defineret ? -> GridFoto.GridDan("SELECT * FROM fotooversigt;","foto",DgFoto)
Avatar billede ha9953 Nybegynder
04. januar 2004 - 18:50 #4
footfunktion - der mente jeg fotofunktionen FotoHojdeBredde og gridfoto.griddan er defineret i en anden customcontrol - den fungerer udemærket for sig selv
Avatar billede ha9953 Nybegynder
11. januar 2004 - 01:12 #5
lukker og slukker - ingen løsninger :-(
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