2013-02-15 83 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