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 fejlenCustomcontrol:
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>
