更新パネル内に画像コントロールがあり、ページの読み込みでその URL を設定しています。
page_load のコードビハインド
string url = "example.com";
Image1.ImageUrl = url;
aspx の updatepanel 内
<asp:Image ID="Image1" runat="server" CssClass="image" />
また、更新パネル内にいくつかの送信ボタンがあり、ボタンのクリックでいくつかのテックスボックスとラベルを更新しています。
ただし、これによりページ全体が更新されます。(スクロールバーが上がります。)
画像を更新パネルの外に移動すると、これは起こりません。問題は、更新パネルの外側の画像を削除すると、レイアウトがまったく機能しないことです。誰でもこれで私を助けることができますか?ありがとう。
アップデート
これはChromeでのみ発生することに気付きました。誰にもアイデアはありますか?
更新 2 そのページで、更新パネルから img を削除することで問題を解決しました。レイアウト作業を行うのは地獄でしたが、うまくいきました。
ただし、別のページがあり、ユーザーがクリックしてさらに読み込むと、更新パネルに新しい imgs を追加しています。同じ取引で、明らかに、今回は更新パネルから画像を移動できません。これがコードです。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<!--Recent Uploads-->
<div class="uploads">
<h2>Uploads</h2>
<asp:UpdatePanel ID="RecentUpload" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="loaduploads"/>
</Triggers>
<ContentTemplate>
<asp:Button CssClass="uploadButton" ID="loaduploads" runat="server" Text="Load More" OnClick="loaduploads_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
コード ビハインド (アップロード インデックスはセッション変数)
upload_index += 5;
for (int i = 0; i < upload_index; i++)
{
try
{
SSImage img = images[i];
HyperLink imglink = new HyperLink();
imglink.NavigateUrl = "/Image.aspx?id=" + img.id;
imglink.ImageUrl = "/ShowImage.ashx?imgid=" + img.id;
imglink.ToolTip = img.title;
imglink.CssClass = "imgupload";
Control contentpanel = RecentUpload.ContentTemplateContainer;
contentpanel.Controls.AddAt(contentpanel.Controls.Count - 2, imglink);
}
catch (ArgumentOutOfRangeException)
{
loaduploads.Visible = false;
break;
}
}
更新 3
この問題は静的画像では発生せず、showimage.ashx
. これがコードです。
<%@ WebHandler Language="C#" Class="ShowImage" %>
using System;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public class ShowImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
SqlDataReader rdr = null;
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
try
{
string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
conn = new SqlConnection(connStr);
cmd = new SqlCommand("SELECT Image_data FROM [Image_table] WHERE Image_id = " + context.Request.QueryString["imgID"], conn);
conn.Open();
Object result = cmd.ExecuteScalar();
//if nothing found throw exception
if (result == null)
{
throw new Exception();
}
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
context.Response.ContentType = "image/jpg";
context.Response.BinaryWrite((byte[])rdr["Image_data"]);
}
if (rdr != null)
rdr.Close();
}
catch
{
}
finally
{
conn.Close();
conn.Dispose();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}