zoukankan      html  css  js  c++  java
  • ASP.NET实现添加,更新,删除和用DataList显示图片

    最近一个专案(VB.NET)中,其中有一个功能,就是让用户在后台管理跑马灯图片。可以实现上传图片,更新图片和删除图片。Insus.NET使用asp.net的asp:FileUpload来上传与使用asp:DataList来显示。上传,显示与删除图片也许对大家来说没有什么困难,此篇博文是分享更新图片的功能。首先选择DataList的某一张图片,然后为更新选择图片文件,最后进行更新。先看演示动画:

     

    为DataList写一个事件:OnItemCreated="DataListGallery_ItemCreated"
    在vb.net写这个事件:

    View Code
    Protected Sub DataListGallery_ItemCreated(sender As Object, e As DataListItemEventArgs)
            '判断编辑铵钮是否是在DataList的AlternatingItem或是Item内。
            If e.Item.ItemType = ListItemType.AlternatingItem OrElse e.Item.ItemType = ListItemType.Item Then
                '编辑铵钮对象是否为空
                If e.Item.FindControl("ImageButtonEdit"IsNot Nothing Then
                    '不为空的话,把对象转为ImageButton控件
                    Dim ImageButtonEdit As ImageButton = DirectCast(e.Item.FindControl("ImageButtonEdit"), ImageButton)
                    '为ImageButton写Click事件。
                    AddHandler ImageButtonEdit.Click, AddressOf ImageButtonEdit_Click
                End If
            End If
        End Sub

    当用户click时,需要改变当前栏位背景Color,还有一个重点的地方,是要获取图片的主键,并用session保存起来。

    View Code
    Private Sub ImageButtonEdit_Click(sender As Object, e As ImageClickEventArgs)
            '把sender对象转换为ImageButton控件
            Dim imageButton As ImageButton = DirectCast(sender, ImageButton)
            '把ImageButton控件的Parent控件转为DataListItem
            Dim dataListItem As DataListItem = DirectCast(imageButton.Parent, DataListItem)
            '改变栏位背景Color
            dataListItem.BackColor = Drawing.Color.Red
            '获取主键关保存至Session中
            Session("SlideMarqueeGalleryId") = Me.DataListGallery.DataKeys(dataListItem.ItemIndex).ToString()
        End Sub

     更新事件:

    View Code
     Protected Sub btnUpdate_Click(sender As Object, e As EventArgs)
            '如果用户没有选择将要编辑的图片,提示用户选择。Session为空,即是用户没有选择图片
            If String.IsNullOrEmpty(DirectCast(Session("SlideMarqueeGalleryId"), String)) Then
                objInsusJsUtility.JsAlert("选择将要编辑的图片。")
                Return
            End If

            '判断是否有选择图片
            If Not Me.FileUpload2.HasFile Then
                objInsusJsUtility.JsAlert("选择上传文件。")
                Return
            End If

            '使用IO名称空间下Path静态方法GetExtension()获取图片的扩展名,也就是获取图片格式
            Dim extension As String = System.IO.Path.GetExtension(Me.FileUpload2.PostedFile.FileName)

            '创建文件名,包括路径
            Dim newFileName As String = Guid.NewGuid().ToString() & extension
            '创建文件,存储在专案中临时目录中
            Dim file As String = Server.MapPath(InsusBase.TemporaryDirectory() & newFileName)
            '保存文件
            Me.FileUpload2.SaveAs(file)

            '判断是否为图片,此方法参考:http://www.cnblogs.com/insus/archive/2012/03/08/2385054.html
            If Not IsImage(file) Then
                objInsusJsUtility.JsAlert("选择图片格式文件再上传。")
                Return
            End If

            '把文件转为流
            Dim stm As Stream = Me.FileUpload2.PostedFile.InputStream
            Try
                objSlideMarqueeGallery.Update(extension, stm, DirectCast(Session("SlideMarqueeGalleryId"), String))
                Data_Binding()
                objInsusJsUtility.JsAlert("图片成功上传。")

            Catch ex As Exception
                objInsusJsUtility.JsAlert(ex.Message)
            End Try
            '上传更新成功之后,要清除Session
            Session("SlideMarqueeGalleryId") = Nothing
        End Sub
  • 相关阅读:
    PHP中each与list用法分析
    三大范式通俗讲解
    数据库三大范式详解
    利用JS制作简便计算器
    CSS下拉列表错误纠正
    下拉列表
    CSS选择器、标签,div的位置。
    php注册审核
    php分页查询
    php投票练习
  • 原文地址:https://www.cnblogs.com/insus/p/2385223.html
Copyright © 2011-2022 走看看