请问一下关于 Asp.net 从数据库中取图片显示出来,并且可以下一笔, 上一笔, 最前一笔, 最后一笔

时间:2023-02-11 17:11:01
请问一下各位, 现在需要 Asp.ne 实现一个类似图片浏览的功能, 输入日期区间后, 从数据库中读取大量二进制图片,显示出来,

 并且可以下一笔, 上一笔, 最前一笔, 最后一笔, 而第一次加载图片时不能 load 太久, 且下一笔时也不能 load 太久, 

 请问有类似功能的源码或库, 可以参考的吗?                     thanks!

10 个解决方案

#1


上一笔,下一笔啥意思。。。

是上一张图片,下一张图片吗。

你从数据库读,可以采用预读的机制,把当前图片的前后几张图片先读出来,缓存下来。

这样,切换的时候可以加快速度。

#2


笔这个单位这里做何解。。。
可以参照楼上的方案

#3


一般不都是图片直接放服务器图片目录里,数据库里存个路径就好了
来回折腾图片数据有什么意义

#4


图片存成二进制还要解析,图片一般都是存成文件,数据库里存路径

#5


请问一下各位, 现在需要 Asp.ne 实现一个类似图片浏览的功能, 输入日期区间后, 从数据库中读取大量二进制图片,显示出来,

 并且可以下一张, 上一张, 最前一张, 最后一张, 而第一次加载图片时不能 load 太久, 且下一笔时也不能 load 太久, 

 请问有类似功能的源码或库, 可以参考的吗?                     thanks!

#6


http://www.cnblogs.com/lhb25/archive/2011/07/20/33-mega-jquery-image-plugins-collection.html

#7


http://www.cnblogs.com/triggor/archive/2012/03/29/2423287.html

自己看看吧  哪有来了就要源码的


你先按照别人做的修改成自己想要的    遇到问题了再来问

#8


该回复于2015-01-17 08:49:31被管理员删除

#9


简单的方法,用GridView来显示,
它自带有分页功能。第一页只显示一张图片,即一笔记录。启用分页功能。

#10


ASP.NET读取数据库图片、并且翻页显示
//图片展示控件设置
  <asp:DataList ID="dlPictrue" runat="server" RepeatColumns="3"
                                            RepeatDirection="Horizontal" onitemcommand="dlPictrue_ItemCommand" 
                                            onitemdatabound="dlPictrue_ItemDataBound" DataKeyField="ID"> 
                                                    <ItemTemplate>
 <a href="#">
                                                                     <img alt='<%# Eval("C_Name")%>' src='UpSmall/<%# Eval("url") %>' 
                                                                         style="border-width:0px; width: 289px; height: 224px;"/></a>
  <a href="#">相册名称:<%# Eval("C_Name").ToString().Length > 5 ? Eval("C_Name").ToString().Substring(0, 5) + "..." : Eval("C_Name")%>(共<%# Eval("p_num")%>张)</a>
                                                                    <br />
                                                                    <asp:ImageButton ID="ImageButton1" runat="server" AlternateText="进入并浏览" CommandName="Delete"
                                                                ImageUrl="~/images/index01_08.gif" CausesValidation="False" />
 </ItemTemplate>
 <asp:Label ID="labCurrentPage" runat="server"></asp:Label>
                                                                    /
                                                                    <asp:Label ID="labPageCount" runat="server"></asp:Label>
                                                                    <asp:LinkButton ID="lnkbtnFirst" runat="server" CommandName="first" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">首页</asp:LinkButton>
                                                                    <asp:LinkButton ID="lnkbtnFront" runat="server" CommandName="pre" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">上一页</asp:LinkButton>
                                                                    <asp:LinkButton ID="lnkbtnNext" runat="server" CommandName="next" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">下一页</asp:LinkButton>
                                                                    <asp:LinkButton ID="lnkbtnLast" runat="server" CommandName="last" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">尾页</asp:LinkButton>
                                                                    &nbsp;&nbsp; 跳转至:<asp:TextBox ID="txtPage" runat="server" Height="21px" Width="35px" CssClass="watermark"></asp:TextBox>
                                                                    <asp:Button ID="Button1" runat="server" CommandName="search" Height="23px" 
                                                                        Text="GO" Width="46px" CausesValidation="False" />                                                   <FooterTemplate>
 </FooterTemplate>
  </asp:DataList>//codego.net/tags/11/1/
//cs页面绑定控件加载数据库数据
 protected static PagedDataSource pds = new PagedDataSource();//创建一个分页数据源的对象且一定要声明为静态
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            this.BindDataList(0);
    }
    public void BindDataList(int currentpage)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
        pds.AllowPaging = true;//允许分页
        pds.PageSize = 6;//每页显示3条数据
        pds.CurrentPageIndex = currentpage;//当前页为传入的一个int型值
        string strSql = "select A.*,"
                   + "(select count(*) from Photo1 B where B.CategoryID = A.ID) AS p_num,"
                   + "(select top 1 C.url from Photo1 C where C.CategoryID = A.ID) AS url "
                   + "from Photo_Category1 AS A "
                   + "where A.C_Status ='公开' "
                   + "and  A.ID in "
                   + "(select CategoryID from Photo1)";
        conn.Open();//打开数据库连接
        SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
        DataSet ds = new DataSet();
        sda.Fill(ds);//把执行得到的数据放在数据集中
        pds.DataSource = ds.Tables[0].DefaultView;//把数据集中的数据放入分页数据源中
        dlPictrue.DataSource = pds;//把数据集中的数据放入分页数据源中
        dlPictrue.DataBind();//绑定数据
        conn.Close();
    }
//翻页显示
 protected void dlPictrue_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Footer)
        {
            //以下六个为得到脚模板中的控件,并创建变量.
            Label CurrentPage = e.Item.FindControl("labCurrentPage") as Label;
            Label PageCount = e.Item.FindControl("labPageCount") as Label;
            LinkButton FirstPage = e.Item.FindControl("lnkbtnFirst") as LinkButton;
            LinkButton PrePage = e.Item.FindControl("lnkbtnFront") as LinkButton;
            LinkButton NextPage = e.Item.FindControl("lnkbtnNext") as LinkButton;
            LinkButton LastPage = e.Item.FindControl("lnkbtnLast") as LinkButton;
            CurrentPage.Text = (pds.CurrentPageIndex + 1).ToString();//绑定显示当前页
            PageCount.Text = pds.PageCount.ToString();//绑定显示总页数
            if (pds.IsFirstPage)//如果是第一页,首页和上一页不能用
            {
                FirstPage.Enabled = false;
                PrePage.Enabled = false;
            }
            if (pds.IsLastPage)//如果是最后一页"下一页"和"尾页"按钮不能用
            {
                NextPage.Enabled = false;
                LastPage.Enabled = false;
            }
        }
    }

#1


上一笔,下一笔啥意思。。。

是上一张图片,下一张图片吗。

你从数据库读,可以采用预读的机制,把当前图片的前后几张图片先读出来,缓存下来。

这样,切换的时候可以加快速度。

#2


笔这个单位这里做何解。。。
可以参照楼上的方案

#3


一般不都是图片直接放服务器图片目录里,数据库里存个路径就好了
来回折腾图片数据有什么意义

#4


图片存成二进制还要解析,图片一般都是存成文件,数据库里存路径

#5


请问一下各位, 现在需要 Asp.ne 实现一个类似图片浏览的功能, 输入日期区间后, 从数据库中读取大量二进制图片,显示出来,

 并且可以下一张, 上一张, 最前一张, 最后一张, 而第一次加载图片时不能 load 太久, 且下一笔时也不能 load 太久, 

 请问有类似功能的源码或库, 可以参考的吗?                     thanks!

#6


http://www.cnblogs.com/lhb25/archive/2011/07/20/33-mega-jquery-image-plugins-collection.html

#7


http://www.cnblogs.com/triggor/archive/2012/03/29/2423287.html

自己看看吧  哪有来了就要源码的


你先按照别人做的修改成自己想要的    遇到问题了再来问

#8


该回复于2015-01-17 08:49:31被管理员删除

#9


简单的方法,用GridView来显示,
它自带有分页功能。第一页只显示一张图片,即一笔记录。启用分页功能。

#10


ASP.NET读取数据库图片、并且翻页显示
//图片展示控件设置
  <asp:DataList ID="dlPictrue" runat="server" RepeatColumns="3"
                                            RepeatDirection="Horizontal" onitemcommand="dlPictrue_ItemCommand" 
                                            onitemdatabound="dlPictrue_ItemDataBound" DataKeyField="ID"> 
                                                    <ItemTemplate>
 <a href="#">
                                                                     <img alt='<%# Eval("C_Name")%>' src='UpSmall/<%# Eval("url") %>' 
                                                                         style="border-width:0px; width: 289px; height: 224px;"/></a>
  <a href="#">相册名称:<%# Eval("C_Name").ToString().Length > 5 ? Eval("C_Name").ToString().Substring(0, 5) + "..." : Eval("C_Name")%>(共<%# Eval("p_num")%>张)</a>
                                                                    <br />
                                                                    <asp:ImageButton ID="ImageButton1" runat="server" AlternateText="进入并浏览" CommandName="Delete"
                                                                ImageUrl="~/images/index01_08.gif" CausesValidation="False" />
 </ItemTemplate>
 <asp:Label ID="labCurrentPage" runat="server"></asp:Label>
                                                                    /
                                                                    <asp:Label ID="labPageCount" runat="server"></asp:Label>
                                                                    <asp:LinkButton ID="lnkbtnFirst" runat="server" CommandName="first" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">首页</asp:LinkButton>
                                                                    <asp:LinkButton ID="lnkbtnFront" runat="server" CommandName="pre" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">上一页</asp:LinkButton>
                                                                    <asp:LinkButton ID="lnkbtnNext" runat="server" CommandName="next" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">下一页</asp:LinkButton>
                                                                    <asp:LinkButton ID="lnkbtnLast" runat="server" CommandName="last" 
                                                                        Font-Underline="False" ForeColor="Black" CausesValidation="False">尾页</asp:LinkButton>
                                                                    &nbsp;&nbsp; 跳转至:<asp:TextBox ID="txtPage" runat="server" Height="21px" Width="35px" CssClass="watermark"></asp:TextBox>
                                                                    <asp:Button ID="Button1" runat="server" CommandName="search" Height="23px" 
                                                                        Text="GO" Width="46px" CausesValidation="False" />                                                   <FooterTemplate>
 </FooterTemplate>
  </asp:DataList>//codego.net/tags/11/1/
//cs页面绑定控件加载数据库数据
 protected static PagedDataSource pds = new PagedDataSource();//创建一个分页数据源的对象且一定要声明为静态
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            this.BindDataList(0);
    }
    public void BindDataList(int currentpage)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
        pds.AllowPaging = true;//允许分页
        pds.PageSize = 6;//每页显示3条数据
        pds.CurrentPageIndex = currentpage;//当前页为传入的一个int型值
        string strSql = "select A.*,"
                   + "(select count(*) from Photo1 B where B.CategoryID = A.ID) AS p_num,"
                   + "(select top 1 C.url from Photo1 C where C.CategoryID = A.ID) AS url "
                   + "from Photo_Category1 AS A "
                   + "where A.C_Status ='公开' "
                   + "and  A.ID in "
                   + "(select CategoryID from Photo1)";
        conn.Open();//打开数据库连接
        SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
        DataSet ds = new DataSet();
        sda.Fill(ds);//把执行得到的数据放在数据集中
        pds.DataSource = ds.Tables[0].DefaultView;//把数据集中的数据放入分页数据源中
        dlPictrue.DataSource = pds;//把数据集中的数据放入分页数据源中
        dlPictrue.DataBind();//绑定数据
        conn.Close();
    }
//翻页显示
 protected void dlPictrue_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Footer)
        {
            //以下六个为得到脚模板中的控件,并创建变量.
            Label CurrentPage = e.Item.FindControl("labCurrentPage") as Label;
            Label PageCount = e.Item.FindControl("labPageCount") as Label;
            LinkButton FirstPage = e.Item.FindControl("lnkbtnFirst") as LinkButton;
            LinkButton PrePage = e.Item.FindControl("lnkbtnFront") as LinkButton;
            LinkButton NextPage = e.Item.FindControl("lnkbtnNext") as LinkButton;
            LinkButton LastPage = e.Item.FindControl("lnkbtnLast") as LinkButton;
            CurrentPage.Text = (pds.CurrentPageIndex + 1).ToString();//绑定显示当前页
            PageCount.Text = pds.PageCount.ToString();//绑定显示总页数
            if (pds.IsFirstPage)//如果是第一页,首页和上一页不能用
            {
                FirstPage.Enabled = false;
                PrePage.Enabled = false;
            }
            if (pds.IsLastPage)//如果是最后一页"下一页"和"尾页"按钮不能用
            {
                NextPage.Enabled = false;
                LastPage.Enabled = false;
            }
        }
    }