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

 

 

posted @ 2012-03-08 15:14 Insus.NET 阅读(...) 评论(...) 编辑 收藏