• 我的第一篇博客缓存显示图片


    话不多说,直接入正题:

    功能简介:实现上传若干图片,加入缓存,一直到最后全部保存的时候才保存进数据库,可为图片指定分组,图片要显示在相应分组里。

    具体实现:

    Ajax控件:

    View Code
    1 <asp:ScriptManager ID="smScript" runat="server"></asp:ScriptManager>

    前台界面代码:

    View Code
     1 图片信息:<table border="0" cellpadding="2" cellspacing="2" class="tableBox">
     2                     <tr>
     3                         <td>
     4                             <table border="0" cellpadding="5" cellspacing="0" width="100%">
     5                                 <tr>
     6                                     <td class="fieldTitle">
     7                                         相册图片信息:
     8                                     </td>
     9                                     <input id="hidAlbum" runat="server" type="hidden" />
    10                                     <td class="fieldBigCont" id="tdAlbumUpload" runat="server">
    11                                         <table>
    12                                             <tr>
    13                                                 <td style="padding: 0px;">
    14                                                     <asp:UpdatePanel ID="upAlbum" runat="server" UpdateMode="Conditional">
    15                                                         <ContentTemplate>
    16                                                             <asp:DropDownList ID="ddlAlbum" runat="server" Width="100px" AppendDataBoundItems="true">
    17                                                             </asp:DropDownList>
    18                                                             <a href="#" onclick="OpenAlbumWindow()"
    19                                     style="color: Blue;">添加相册</a>
    20                                                             <asp:HiddenField ID="hidPhotoFileLength" runat="server" />
    21                                                             <asp:HiddenField ID="hidPhotoFileName" runat="server" /></ContentTemplate>
    22                                                     </asp:UpdatePanel>
    23                                                             <asp:FileUpload ID="fuAlbum" runat="server" Width="297px" BorderWidth="1" BorderStyle="Solid"
    24                                                                 BorderColor="#98AAB1" />
    25                                                             图片描述:<input id="txtPhotoDesc" type="text" class="textinput" runat="server" style=" 200px;" />
    26                                                             <asp:Button ID="lbtAppendPhoto" runat="server" OnClick="btnAppendPhoto" CausesValidation="false"
    27                                                                 CssClass="btnCss" Text="上传"></asp:Button>
    28                                                         
    29                                                 </td>
    30                                             </tr>
    31                                         </table>
    32                                         <asp:UpdatePanel ID="upPhoto" runat="server" UpdateMode="Conditional">
    33                                             <ContentTemplate>
    34                                                 <table id="tbAlbum" runat="server">
    35                                                 </table>
    36                                             </ContentTemplate>
    37                                         </asp:UpdatePanel>
    38                                     </td>
    39                                 </tr>
    40                             </table>
    41                         </td>
    42                     </tr>
    43                 </table>

    Upload页面保存图片返回给父页面:

    View Code
     1    protected void btnAdd_Click(object sender, EventArgs e)
     2     {
     3         Common.UploadFiles uf;
     4         string vPath = ConfigHelper.upLoadHomeImgPath;
     5         lbl.Text = string.Empty;
     6         uf = new Common.UploadFiles(vPath, FileUpload1,lbl,Common.Enums.FileTypeEnum.Pic.GetHashCode());
     7         if (lbl.Text != string.Empty && lbl.Text != "文件上传成功!")
     8         {
     9             Response.Write(string.Format("<script type='text/javascript'>alert('{0}');</script>", lbl.Text));
    10             return;
    11         }
    12         
    13         string fileName = uf.SavePic();
    14         string SmallImg = string.Empty;
    15         if (Type == "2")
    16         {
    17             string vSmallPath = ConfigHelper.upLoadHomesmallImgPath;
    18             uf = new Common.UploadFiles(vSmallPath, FileUpload1, lbl, Common.Enums.FileTypeEnum.Pic.GetHashCode());
    19             SmallImg = uf.SaveThumbnailsPic(180, 120);
    20         }
    21         string imgHtml = String.Format("<img src='{0}'/>", vPath+fileName);
    22 
    23         if (uf.Width > 660)
    24         {
    25             imgHtml = String.Format("<a href='{0}'target='_brank'><img src='{0}' style='660px;height:500px;' /></a>", fileName);
    26         }
    27 
    28         if (Type == "1" || Type == "2")
    29             Response.Write(string.Format("<script type='text/javascript'>window.opener.OnloadImg('{0}','{1}','{2}');window.close();</script>", fileName, SmallImg, Type));
    30         else
    31             Response.Write("<script type='text/javascript'>window.opener.tinyMCE.execCommand('mceInsertContent',false,\"" + imgHtml + "\");window.close ();</script>");
    32     }

    脚本:

    View Code
     1      //添加相册回调函数
     2         function ReturnValueAlbum(file_name) {
     3             if (file_name != undefined) {
     4                 document.getElementById("<%=this.hidSN_ID.ClientID %>").value = file_name;
     5                 document.getElementById("<%=this.lnkbtnBindAlbumDDL.ClientID %>").click();
     6             }
     7         }
     8     //移除图片
     9      function DelPhoto(pid) {
    10             if (confirm('确定移除该图片吗?')) {
    11                 document.getElementById("<%=this.hidSNAP_ID.ClientID %>").value = pid;
    12                 return true;
    13             }
    14             else
    15                 return false;
    16         }
    17 
    18         //添加相册
    19         function OpenAlbumWindow() {
    20             var NewsID = '<%=this.NewsID %>';
    21             window.open('AddAlbum.aspx?sn_id=' + NewsID, 'uploadWindow', 'width=300,height=120;toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
    22             return false;
    23         }
    24 
    25         function OnloadImg(filename,smallimg, tp) {
    26             if (tp == "1") {
    27                 document.getElementById("<%=this.hidTitlePic.ClientID %>").value = filename;
    28                 document.getElementById("<%=this.lnkbtnOnloadTitle.ClientID %>").click();
    29             }
    30             else if (tp == "2") {
    31                 document.getElementById("<%=this.hidTitleIllustration.ClientID %>").value = filename;
    32                 document.getElementById("<%=this.hidSmallTitleIllustration.ClientID %>").value = smallimg;
    33                 document.getElementById("<%=this.lnkbtnOnloadTitleIllustration.ClientID %>").click();
    34             }
    35         }

    Page_load里注册Linkbutton:

    View Code
    1 smScript.RegisterAsyncPostBackControl(lnkbtnBindAlbumDDL);

    绑定相册列表:

    View Code
     1 调用:
     2 BindAlbumDDL(NewsID);
     3 
     4 方法:
     5     /// <summary>
     6     /// 绑定相册列表
     7     /// </summary>
     8     /// <param name="NewsID">主题编号</param>
     9     public void BindAlbumDDL(string NewsID)
    10     {
    11         DataSet dsAlbum = SnaBll.GetList(" SN_ID='" + NewsID + "' order by CreateTime desc ");
    12         DataTable dtAlbum = null != dsAlbum ? dsAlbum.Tables[0] : null;
    13 
    14         ddlAlbum.Items.Clear();
    15 
    16         ddlAlbum.DataSource = dtAlbum;
    17         ddlAlbum.DataValueField = "SNA_ID";
    18         ddlAlbum.DataTextField = "GroupName";
    19         ddlAlbum.DataBind();
    20 
    21         ddlAlbum.Items.Insert(0, new ListItem("-请选择相册-", "-1"));
    22     }

    获取相册个数和相应相册图片数:

    View Code
     1     /// <summary>
     2     /// 获取该专题新闻相册个数
     3     /// </summary>
     4     /// <param name="NewsID">专题新闻编号</param>
     5     /// <returns></returns>
     6     private int GetAlbumCount(string NewsID, ref DataTable dtAlbum)
     7     {
     8         DataSet dsAlbum = SnaBll.GetList(" SN_ID='" + NewsID + "' order by CreateTime desc ");
     9         dtAlbum = null != dsAlbum ? dsAlbum.Tables[0] : null;
    10 
    11         int AlbumCount = null != dtAlbum ? dtAlbum.Rows.Count : 0;
    12 
    13         return AlbumCount;
    14     }
    15 
    16     /// <summary>
    17     /// 获取某专题新闻相册图片数
    18     /// </summary>
    19     /// <param name="AlbumID">相册编号</param>
    20     /// <returns></returns>
    21     private int GetAlbumPhotoCount(string AlbumID, ref DataTable dtAlbumPhoto)
    22     {
    23         DataRow[] drA = _dtAlbumPhoto.Select(" SNA_ID=" + AlbumID);
    24 
    25         InitAlbumConditionDataSource();
    26 
    27         foreach (DataRow dr in drA)
    28         {
    29             GetAlbumConditionViewRowData(dr, AlbumID);
    30         }
    31 
    32         int AlbumPhotoCount = null != _dtAlbumConditionPhoto ? _dtAlbumConditionPhoto.Rows.Count : 0;
    33 
    34         dtAlbumPhoto = _dtAlbumConditionPhoto;
    35 
    36         return AlbumPhotoCount;
    37     }

    追加图片:

    View Code
    1     /// <summary>
     2     /// 更新相册里的图片列表
     3     /// </summary>
     4     protected void btnAppendPhoto(object sender, EventArgs e)
     5     {
     6         if (ddlAlbum.Items.Count == 1)
     7         {
     8             MessageBox.Show(this, "请先创建一个相册");
     9             return;
    10         }
    11         if (ddlAlbum.SelectedValue == "" || ddlAlbum.SelectedValue == "-1")
    12         {
    13             MessageBox.Show(this, "请先选择一个相册");
    14             return;
    15         }
    16         if (hidPhotoFileLength.Value == string.Empty)
    17         {
    18             MessageBox.Show(this, "请先选择图片");
    19             return;
    20         }
    21 
    22         GetAlbumViewRowData();
    23         BindAlbumPhotoList();
    24         upAlbum.Update();
    25     } 
    缓存相册以及图片信息:
    View Code
     1     /// <summary>
     2     /// 更新相册列表的新闻编号(包括相册里图片的新闻编号)
     3     /// </summary>
     4     /// <param name="SN_ID"></param>
     5     private void UpdateAlbumList(string SN_ID)
     6     {
     7         _dtAlbumPhoto = (DataTable)ViewState["_AlbumPhoto_Items_"];
     8 
     9         if (null != _dtAlbumPhoto)
    10         {
    11             foreach (DataRow dr in _dtAlbumPhoto.Rows)
    12             {
    13                 string SNAP_ID = dr["SNAP_ID"].ToString();
    14                 int n = 0;
    15                 bool b = int.TryParse(SNAP_ID, out n);
    16 
    17                 if (b)
    18                     SnapModel = SnapBll.GetModel(int.Parse(SNAP_ID));
    19                 SnapModel.PhotoTitle = dr["PhotoTitle"].ToString();
    20                 SnapModel.PhotoUrl = dr["PhotoUrl"].ToString();
    21                 SnapModel.SN_ID = SN_ID;
    22                 SnapModel.SNA_ID = int.Parse(dr["SNA_ID"].ToString());
    23                 SnaModel = SnaBll.GetModel(SnapModel.SNA_ID.Value);
    24                 SnaModel.SN_ID = SN_ID;
    25 
    26                 if (b)
    27                     SnapBll.Update(SnapModel);
    28                 else
    29                     SnapBll.Add(SnapModel);
    30 
    31                 SnaBll.Update(SnaModel);
    32             }
    33         }
    34     }
    最后的保存:
     View Code
    1     /// <summary>
     2     /// 保存
     3     /// </summary>
     4     /// <param name="sender"></param>
     5     /// <param name="e"></param>
     6     protected void btnUpdate_Click(object sender, EventArgs e)
     7     {
     8       
     9         try
    10         {
    11             int t = 0;
    12 
    13             if (NewsID == null || NewsID == "" || NewsID == "-1" || !int.TryParse(NewsID, out t))
    14             {
    15                 SnModel.State = 0;
    16                 int SN_ID = SnBll.Add(SnModel);
    17                 UpdateAlbumList(SN_ID.ToString());
    18                 MessageBox.ShowAndRedirect(this, "添加成功", "SpecialNewsList.aspx");
    19             }
    20             else
    21             {
    22                 UpdateAlbumList(NewsID);
    23                 MessageBox.ShowAndRedirect(this, "修改成功", "SpecialNewsList.aspx");
    24             }
    25         }
    26         catch
    27         { }
    28     }
  • 相关阅读:
    [转载] 常用CASE工具介绍
    GridView, DataGrid 中,DataFormatString语法汇总
    [轉]SQL Server中数据类型详解
    强烈推荐asp.net数据访问的官方指南系列 (Data Access Tutorials)
    实现iFrame自适应高度,原来很简单!
    [转]Web service到底是什么?在什么情况下,你应该使用web service
    贴一个查询SQL Server数据库中所有表及其描述(Description)的SQL语句
    C#中,String和string的区别
    ERWin 连接SQL Sever2005的问题
    [转载]ERwin相关概念入门
  • 原文地址:https://www.cnblogs.com/gawking/p/2716953.html
Copyright © 2020-2023  润新知