2013-02-15 81 views
0

我创建了一个图表,并将其保存在路径server.mappath(“/ images/chart/chartname.png”)中,如果我去了路径,图像就在那里,我可以在我的电脑上打开它,但我真正想要做的是在创建后在页面上显示图像,最好是异步显示。我试图在更新面板中放置一个asp:image控件并更改url,但这不起作用。我尝试了很多不同的方式,如果有人能指引我走向正确的方向,那会很棒。我不会简单地发布任何代码,因为我迄今为止所做的工作正在进行中。一旦我开始尝试打印图像,我会发布片段,如果我有答案。如何将图像“打印”到ASP.NET更新面板页面?

编辑:下面是一些代码

启动整个事情的按钮事件:

Protected Sub btnCreate_Click(sender As Object, e As EventArgs) Handles btnCreate.Click 

    Dim worker As New backgroundWorker 

    'Check input 

    worker.RunWorker({}) 

    Session("worker") = worker 

    Timer1.Enabled = True 

End Sub 

这将启动工人,生成图表的罚款,并开始被用来更新计时器面板。最终,在该代码,这种情况

Dim imgpath As String = Server.MapPath("images/chart/test.png") 
chart.SaveImage(imgpath, ChartImageFormat.Png) 
chartImg.ImageUrl = "~/images/chart/test.png" 

现在,我知道,执行该代码后的面板被更新,因为我输出一些消息到一个多文本框,而且他们出现。所有这些控件都在updatePanel的contentTemplate中。

+0

创建图表的呼叫是否源自页面?你可以使用AJAX吗? – 2013-02-15 22:50:52

+0

显示您用来尝试asp的代码:图像控制。如果正确完成,这将工作。 – 2013-02-15 22:51:50

+0

ImageURL应该是'〜/ images/chart/chartname.png'而不是文件系统路径。文件系统路径不起作用。 – MikeSmithDev 2013-02-15 23:51:02

回答

1

在内部和更新面板中设置ASP.Net图像控件的ImageUrl属性应该可以在不使用Javascript的情况下实现,尽管该方法可以非常高效。 UpdatePanels往往是“沉重的”,即ScriptManager,UpdatePanel和ASP.Net ViewState倾向于通过他们的AJAX方法来回发送大量信息。你可以看到我的意思是使用Fiddler来观看你的网络流量。

这就是说,我能够以下列方式达到预期的效果。我有两个静态图片Image1.jpg和Image2.jpg,但只要网址正确,它就可以与您的动态生成的图片一起工作。

这里是我的ASPX页面的文本:

<form id="form1" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<div> 

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:Image ID="Image1" runat="server" ImageUrl="~/Image1.jpg" Width="300"></asp:Image><br /> 
      <asp:Button runat="server" ID="btnSwitchImage" Text="Switch" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

</div> 
</form> 

这里是后台代码:

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     btnSwitchImage.Click += new EventHandler(btnSwitchImage_Click); 
    } 

    void btnSwitchImage_Click(object sender, EventArgs e) 
    { 
     Image1.ImageUrl = "~/Image2.jpg"; 
    } 
} 

只要按钮和图像控件中的UpdatePanel的ContentTemplate一切都应该是通过AJAX中继。再次使用Fiddler来确认这一点。

如果这个例子适合你,但你仍然无法让你的应用程序工作,请尝试在你的问题中张贴一些代码。它可以帮助每个人直接分析问题。

+0

我用一些代码更新了我的问题。 – Calvin 2013-02-18 14:25:14

1

根据我的经验,上传文件不能在异步模式下工作。您应该使用Jquery库异步上传文件。

选中此链接。

http://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.html 
1

我不知道ajax,但你可以在javascript的帮助下做到这一点。这是我在我的系统上测试的代码,工作正常。

<body> 
<p> 
    welcome to judge site</p> 
<form id="form1" runat="server"> 
<script language="javascript" type="text/javascript"> 
    function PrintImage() 
    { 
     printWindow = window.open ("", "mywindow","location=1,status=1,scrollbars=1,width=600,height=600"); 
     printWindow.document.write("<div style='width:100%;'>"); 
     printWindow.document.write("<img id='img' src='" + document.getElementById('iconId').src + "'/>"); 
     printWindow.document.write("</div>"); 
     printWindow.document.close(); 
     printWindow.print(); 
    } 
</script> 
<div> 
    <img id="iconId" alt="photo" src="iconId.png" style="width: 500px; height: 360px" /><br /> 
    <input type="button" id="btnPrint" value="Print Image" onclick="PrintImage()" /> 
</div> 
</form> 

还有其他更多的例子,你可以找到以下的链接(上面的代码也是从这个源,但由我编辑,以使我的系统上运行)

访问http://forums.asp.net/p/1463001/3369521.aspx

+0

我想在异步任务完成后打印此图像。如果所有其他选项都失败了,我想我可以适应这个工作,但我会尝试更多的东西。 – Calvin 2013-02-18 15:04:18