0

私は、すべてのデータ クエリとフロント エンドの作業に javascript と ajax を使用する Web ページに取り組んでおり、Excel のエクスポート機能を書き込もうとしています。JavaScriptでこれを行う唯一の方法は、IEでのみ利用可能なActiveXControlを使用しているように見えるので、これをWebページの背後にあるコードファイルにサブとして含めたいと思います。

これは良い考えのように思えますが、ボタンをクリックするたびにページがポストバックされ、そこにあったエクスポート対象のデータがすべて失われます。asp:Buttonに含めるOnClientClick="return false;"と、ボタンはポストバックしませんが、Sub も実行されません。register client スクリプト ブロックを使用せずに、ここで私の目標を達成する方法はありますか? どんな助けでも大歓迎です。

ありがとう!

- 編集 -

メソッド呼び出しの $.ajax で 404 を取得しています。関連するコードは次のとおりです。

//server side
Partial Class Report
    Inherits System.Web.UI.Page

    <System.Web.Services.WebMethod()>
    Public Sub toXL()
        Response.Write("<br><br>Here<br><br>")
    End Sub
End Class

//client side
    function toExcel() {
        $.ajax({
            type: "POST",
            url: "/report.aspx/toXL",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.error) {
                    alert(msg.error);
                }
                return false;
            }
        });
    }

//button
<asp:Button ID="MyButton" runat="server" AutoPostBack="false" type="button" OnClientClick="toExcel(); return false;" />
4

1 に答える 1

2

メソッドを WebMethod として記述し、jquery ajax から Web サービスとして呼び出すことができます。そして ajax 呼び出しが実行された後、 false を返します。

<asp:button OnClientClick="DoAction();" id="myid" runat="server"/>


     public partial class _Default : Page 
        {
          [WebMethod]
          public static string MyMethod()
          {
    .......
          }
        }

function DoAction(){
    $.ajax({
      type: "POST",
      url: "PageName.aspx/MethodName",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        if(msg.error){
    //show  error 
        }
    return false;
      }
    });
}
于 2012-09-24T17:54:40.040 に答える