⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagesdialogvb.aspx.vb

📁 Telerik是很大的第三方软件制造商
💻 VB
📖 第 1 页 / 共 2 页
字号:

        '/ <summary>
        '/ Gets the data images data from the database and binds the grid
        '/ </summary>
        Private Sub BindImagesGrid()
            Dim dv As New DataView(GetCurrentResult())
            GetSortFields()
            If Not (sortedBy Is Nothing) AndAlso sortedBy <> "" Then
                dv.Sort = sortedBy + " " + sortedOrder
            End If
            gridCurrentImages.DataSource = dv
            If gridCurrentImages.PageSize * gridCurrentImages.CurrentPageIndex >= dv.Count And _
             gridCurrentImages.CurrentPageIndex > 0 Then
                gridCurrentImages.CurrentPageIndex = gridCurrentImages.CurrentPageIndex - 1
            End If

            gridCurrentImages.DataBind()
        End Sub 'BindImagesGrid


        '/ <summary>
        '/ Converts an image object to a byte array, easily insertable to the database
        '/ </summary>
        '/ <param name="image"></param>
        '/ <returns></returns>
        Private Function GetByteArray(ByVal image As System.Drawing.Image) As Byte()
            Dim ms As New MemoryStream
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif)
            Return ms.ToArray()
        End Function 'GetByteArray


        '/ <summary>
        '/ Searches in the session for the stored result and returns it if found, else
        '/ returns the full data table
        '/ </summary>
        '/ <returns></returns>
        Private Function GetCurrentResult() As DataTable
            If Session("CurrentResult") Is Nothing Then
                Return GetCurrentImagesFromDB()
            Else
                Return CType(Session("CurrentResult"), DataTable)
            End If
        End Function 'GetCurrentResult


        '/ <summary>
        '/ Stores the given result in the Session
        '/ </summary>
        '/ <param name="result"></param>
        Private Sub StoreCurrentResult(ByVal result As DataTable)
            Session("CurrentResult") = result
        End Sub 'StoreCurrentResult


        '/ <summary>
        '/ Searches for the stored sort values in the viewstate and if finds them,
        '/ returns their respective values
        '/ </summary>
        Private Sub GetSortFields()
            If Not (ViewState("SortedBy") Is Nothing) Then
                sortedBy = ViewState("SortedBy").ToString()
                If Not (ViewState("SortedOrder") Is Nothing) Then
                    sortedOrder = ViewState("SortedOrder").ToString()
                Else
                    sortedOrder = "ASC"
                End If
            Else
                sortedBy = Nothing
                sortedOrder = Nothing
            End If
        End Sub 'GetSortFields


        '/ <summary>
        '/ Sets the global sorting members to the given new ones, and also
        '/ stores them in the viewstate for use when sorting
        '/ </summary>
        '/ <param name="SortedBy"></param>
        '/ <param name="SortedOrder"></param>
        Private Sub SetSortFields(ByVal SortedBy As String, ByVal SortedOrder As String)
            SortedBy = SortedBy
            SortedOrder = SortedOrder
            ViewState("SortedBy") = SortedBy
            ViewState("SortedOrder") = SortedOrder
        End Sub 'SetSortFields


        '/ <summary>
        '/ Switches the sorting fields, returns if the pageIndex should be set to 0
        '/ </summary>
        '/ <returns></returns>
        Private Function SwitchSortFields(ByVal newSortBy As String) As Boolean
            Dim initPaging As Boolean = False
            GetSortFields()
            If Not (sortedBy Is Nothing) AndAlso sortedBy.ToLower() = newSortBy.ToLower() Then
                If sortedOrder = "DESC" Then
                    sortedOrder = "ASC"
                Else
                    sortedOrder = "DESC"
                End If
                SetSortFields(sortedBy, sortedOrder)
            Else
                initPaging = True
                SetSortFields(newSortBy, "ASC")
            End If
            Return initPaging
        End Function 'SwitchSortFields

#End Region

#Region "Eventhandlers"

        Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not Page.IsPostBack Then
                htmlRowMessage.Visible = False
                'init the search results in the session when opening for the first time
                StoreCurrentResult(GetCurrentImagesFromDB())
                BindImagesGrid()
            End If
        End Sub 'Page_Load


        Private Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpload.Click
            'Check if the file is not empty
            If htmlIFImage.PostedFile Is Nothing Then
                SetMessage("No file was uploaded")
                Return
            End If
            If htmlIFImage.PostedFile.FileName = "" OrElse htmlIFImage.PostedFile.InputStream.Length = 0 Then
                SetMessage("No file was uploaded")
                Return
            End If
            Dim errorOccured As Boolean = False
            Dim image As System.Drawing.Image
            Try
                image = System.Drawing.Image.FromStream(htmlIFImage.PostedFile.InputStream)
            Catch
                errorOccured = True
                SetMessage("File was not an image")
                Return
            End Try
            errorOccured = SaveImageToDb(image, Path.GetFileName(htmlIFImage.PostedFile.FileName))
            If Not errorOccured Then
                SetMessage("A database error occured")
                Return
            Else
                SetMessage("")
                StoreCurrentResult(GetCurrentImagesFromDB())
                BindImagesGrid()
            End If
        End Sub 'btnUpload_Click


        Private Sub gridCurrentImages_OnItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles gridCurrentImages.ItemDataBound
            If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
                'Get the current binded data
                Dim row As DataRowView = CType(e.Item.DataItem, DataRowView)

                'Assign thumbnail image properties
                Dim htmlImgThumbnail As HtmlImage = CType(e.Item.FindControl("htmlImgThumbnail"), HtmlImage)
                If Not (htmlImgThumbnail Is Nothing) Then
                    htmlImgThumbnail.Alt = String.Format(htmlImgThumbnail.Alt, row("FileName"))
                    htmlImgThumbnail.Src = String.Format(htmlImgThumbnail.Src, row("FileName"))
                End If
                'Assign image selecting Html Anchor's properties (calls the javascript function)
                Dim htmlAnchorImageSelector As HtmlAnchor = CType(e.Item.FindControl("htmlAnchorImageSelector"), HtmlAnchor)
                If Not (htmlAnchorImageSelector Is Nothing) Then
                    htmlAnchorImageSelector.HRef = String.Format(htmlAnchorImageSelector.HRef, row("FileName"))
                End If
                'Assign a command argument to the delete button, so that later 'knows' which file to delete
                Dim lbDelete As LinkButton = CType(e.Item.FindControl("lbDelete"), LinkButton)
                If Not (lbDelete Is Nothing) Then
                    lbDelete.CommandArgument = row("FileName").ToString()
                End If
            End If
        End Sub 'gridCurrentImages_OnItemDataBound


        Private Sub gridCurrentImages_OnItemCommand(ByVal [source] As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles gridCurrentImages.ItemCommand
            Select Case e.CommandName
                Case "Delete"
                    DeleteImage(e.CommandArgument.ToString())
                    StoreCurrentResult(GetCurrentImagesFromDB())
                    BindImagesGrid()
            End Select
        End Sub 'gridCurrentImages_OnItemCommand


        Private Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
            StoreCurrentResult(GetCurrentImagesFromDB(txtSearchCriteria.Text))
            BindImagesGrid()
        End Sub 'btnSearch_Click

        Private Sub gridCurrentImages_OnPageIndexChanged(ByVal [source] As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles gridCurrentImages.PageIndexChanged
            gridCurrentImages.CurrentPageIndex = e.NewPageIndex
            BindImagesGrid()
        End Sub 'gridCurrentImages_OnPageIndexChanged


        Private Sub gridCurrentImages_OnSortCommand(ByVal [source] As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles gridCurrentImages.SortCommand
            GetSortFields()
            If SwitchSortFields(e.SortExpression) Then
                gridCurrentImages.CurrentPageIndex = 0
            End If
            SetSortFields(sortedBy, sortedOrder)
            BindImagesGrid()
        End Sub 'gridCurrentImages_OnSortCommand

#End Region
    End Class 'ImagesDialog
End Namespace 'DBImages

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -