0

グラフを作成し、パス server.mappath("/images/chart/chartname.png") に保存します。パスに移動すると、画像がそこにあり、コンピューターで開くことができますが、私が本当にやりたいのは、できれば非同期で、作成後にページに画像を表示することです。更新パネルに asp:image コントロールを配置して URL を変更しようとしましたが、うまくいきません。私はさまざまな方法を試しましたが、誰かが私を正しい方向に向けることができれば、それは素晴らしいことです. これまでのコードは機能しているため、簡単なコードは投稿しません。画像を印刷しようとすると、回答があればスニペットを投稿します。

編集:ここにいくつかのコードがあります

全体を開始するボタンイベント:

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 にも含まれています。

4

3 に答える 3

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にアクセスします

于 2013-02-16T19:33:42.353 に答える
1

私の経験によると、ファイルのアップロードは非同期モードでは機能しません。Jquery ライブラリを使用してファイルを非同期にアップロードする必要があります。

このリンクを確認してください。

http://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.html
于 2013-02-16T05:14:16.507 に答える
1

ImageUrlパネル内で ASP.Net イメージ コントロールのプロパティを設定すると、Javascript を使用しなくてもうまくいくはずですが、その方法は非常に効率的です。UpdatePanels は「重い」傾向があります。つまり、ScriptManager、UpdatePanel、および ASP.Net ViewState は、AJAX メソッドを介して多くの情報をやり取りする傾向があります。Fiddlerを使用して Web トラフィックを監視することで、私が言いたいことを理解できます。

そうは言っても、次の方法で目的の効果を得ることができました。Image1.jpg と Image2.jpg の 2 つの静的イメージがありますが、URL が正しい限り、動的に生成されたイメージで動作するはずです。

これが私の 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 を使用してこれを確認します。

この例がうまくいくが、それでもアプリケーションを動作させることができない場合は、質問にいくつかのコードを投稿してみてください。誰もが問題を直接分析するのに役立つかもしれません。

于 2013-02-16T20:42:40.657 に答える