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

 

 

你可能感兴趣的:(datalist)