在一些空闲时间后,图像无法从数据库

时间:2017-01-16 14:34:13

标签: c# mysql webforms bootstrapping

我的问题是当我点击产品页面时(在下面的URL中)。它工作正常,但在第一次点击产品菜单后的一些空闲时间,它不会将产品图像从数据库加载到Repeater控件。

我正在使用Bootstrap而不使用更新面板。

请参阅以下链接。 MySite(See Product Page On First Time And Click After 5 to 10 minute of idle time)

我的ASP.net代码是

<asp:Repeater ID="rptrProduct" runat="server">
                    <ItemTemplate>
                        <div class="portfolio-item col-xs-12 col-sm-4 col-md-3">
                            <div class="recent-work-wrap hovereffect">
                                <img id="dtimg1" runat="server" class="img-responsive imggray" src='<%#Eval("ImagePath")%>' alt="" style="height: 185px!Important;" />
                                <div class="overlay1">
                                    <div class="recent-work-inner">
                                        <a id="aimg2" runat="server" href='<%#Eval("ImagePath")%>' rel="prettyPhoto">
                                            <h2>
                                                <%#Eval("ProductName")%></h2>
                                        </a>
                                        <p>
                                            <a id="adtimg1" runat="server" class="preview" href='<%# string.Format("~/BMSubProduct.aspx?pro={0}", Eval("ProductId")) %>'>
                                                <i class="fa fa-eye"></i>View Products</a>
                                        </p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </ItemTemplate>
                </asp:Repeater>

我不知道为什么第一次它不会加载任何图像。

我的C#页码是

if(!Page.IsPostBack)
 {
      DataTable dt = DBMaster.getQueryDataTableSchema(query);
        if (dt.Rows.Count > 0)
        {
            string path = GlobalFunction.getPath(1);
            NoProducts.Visible = false;
            for (int i = 0; i < dt.Rows.Count; i++)
                dt.Rows[i]["ImagePath"] = path + Convert.ToString(dt.Rows[i] ["ImagePath"]);
            rptrProduct.DataSource = dt;
            rptrProduct.DataBind();
        }
        else
        {
            NoProducts.Visible = true;
            rptrProduct.DataSource = null;
            rptrProduct.DataBind();
        }
   }
   public static DataTable getQueryDataTableSchema(string query)
   {
    try
    {
        using (IDbConnection con = sq.Open())
        {
            IDbCommand cmd = con.CreateCommand();
            cmd.CommandText = query;
            IDbDataAdapter adp = sq.GetAdapter(cmd);
            DataSet ds = new DataSet();
            adp.FillSchema(ds, SchemaType.Source);
            adp.Fill(ds);
            con.Close();
            return ds.Tables[0];
        }
    }
    catch (Exception ex)
    {
        return new DataTable();
    }
}

和page_load中的母版页代码是

if (!Page.IsPostBack)
    {
        SQLString.Config = myconnectionString;
    }

此处NoProduct => No Products Are Available Right Now.

我尝试了很多类似的事情:

  1. EnableViewState="true"EnableViewState="false"同时适用于转发器和页面。

  2. 更改web.config中的连接字符串,如

    name="SQLConStr" connectionString="Server=localhost;Database=databasename; Uid = username; Pwd = password; Pooling = false; Connection Timeout = 30"
    
  3. 尝试使用和不使用连接超时和池。

    注意:使用MySQL数据库并使用界面打开数据库连接。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

EnableViewState="true"

并尝试使用

<asp:Image<asp:HyperLink控件

而不是

img和带有runat =“server”的标签。