1

ここでは、最初に JavaScript 関数を呼び出す必要があり、しばらくしてから、同じボタン クリック イベントで ac# 関数を呼び出す必要があります。出来ますか?

 <asp:ImageButton ID="imgBTNExportPPT" runat="server" Width="15" Height="15" border="0" 
 OnClientClick="JavaScript:exportCharts('JPG');" OnClick="imgBTNExportPPT_Click" ImageUrl="~/Images/PPT_icon.png" />

なにか提案を?

4

3 に答える 3

2

Javascript 関数はクライアント側で実行されます。C# 関数はサーバー側で実行されます。それ以上の一時化または非同期要求がなければ、クライアント側の onClick ハンドラー関数はサーバー側の onClick ハンドラー関数の前に実行されます。

わかりましたら、エクスポートしたい画像はクライアント側の処理後に利用可能ですよね? そのため、クライアント側の処理が完了してからサーバー側の処理を実行してください。

AJAXなし?こちらをご覧ください。

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

<script>
  function exportCharts(input)
  {
    //business here
    if(business works)
      return true;
    else
      return false;
  }

</script>

  <asp:ImageButton ID="imgBTNExportPPT" runat="server" Width="15" Height="15" border="0"  ImageUrl="~/Images/PPT_icon.png"
    OnClientClick="return exportCharts('JPG');"
    OnClick="imgBTNExportPPT_Click" />

サーバー側の imgBTNExportPPT_Click ハンドラーは、exportCharts が true を返す場合にのみ実行されます。

于 2012-06-27T08:36:36.383 に答える
1

Ajax 呼び出しを介してサーバー側のメソッドを呼び出さない理由

これを JavaScript メソッドの最後に配置できます

于 2012-06-27T08:12:47.713 に答える
1

「しばらくしてから」とは、「3秒後にアクションを実行する必要がある」などのことを意味する場合は、setTimeoutを使用できます setTimeout(functionToCallAfterIntervalToWait, intervalToWait)

サーバー側のメソッドを呼び出したい場合は、functionToCallAfterIntervalToWait 内で ajax 呼び出しを使用できます。ajax 呼び出しに関するヘルプが必要な場合は、コメントを残してください。

JavaScript から asp.net サーバー メソッドを呼び出す方法の例については、このブログ投稿を参照してください。

jQuery を使用していると仮定すると、( .ajax()を使用して)次のように記述します。

$.ajax( { 
url:"yourAspxPage/NameofTheMethodToCall", 
data: {"nameOfParameter": valueOfParameter}, 
success: function (data) {
//this function will be called after the server side function executes successfuly
});

この関数呼び出しを他のクライアント側操作の後に行う場合は、必ず他のコマンドの下 (後) に記述してください。

于 2012-06-27T08:18:24.120 に答える