2012-01-25 18 views
0

Webパーツにスクロール可能なGridViewがあり、各ユーザースクロールでAJAX呼び出しを行う必要があります。 Web部分でJquery 1.7.1を使用して、C#ハンドラクラスを呼び出します。SharePoint Webパーツ:ashxハンドラへのjquery ajax呼び出しを作成できません

エラー500が発生しました:内部サーバーエラー。ここで

はascxファイルのサンプルです:

<div id="divProducts" style="height:300px;overflow:auto"> 
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" EnableViewState="false"> 
     <AlternatingRowStyle BackColor="White" /> 
     <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle CssClass="header" BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
    </asp:GridView> 
</div> 

<div id="divProgress" style="margin-top: -50px;margin-left:150px;z-index:-999"> 
    <asp:Image ID="image1" ImageUrl="~/_layouts/images/MyWebPart/loading.gif" width="100" height="100" runat="server" /> 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() { 

     //initially hide the loading gif 
     $("#divProgress").hide(); 

     //Attach function to the scroll event of the div 
     $("#divProducts").scroll(function() { 

      //User has scrolled to the end of the grid. Load new data.. 
      $("#divProgress").ajaxStart(function() { 
       $(this).show(); 
      }); 
      $("#divProgress").ajaxStop(function() { 
       $(this).hide(); 
      }); 

      BindNewData(); 

     }); 

    }); 

    function BindNewData() { 
      $.ajax({ 
       type: "GET", 
       url: "/_layouts/MyWebPart/FetchRecordsHandler.ashx", 
       success: function (data) { 
        alert('data ', data); 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        alert(xhr.status); 
        alert(thrownError); 
       } 
      }); 
     } 
</script> 

私は私のWebパーツプロジェクト(レイアウト/ MyWebPart/FetchRecordsHandler.ashx)のレイアウトフォルダに展開されますASHXファイルを追加:

<%@ WebHandler Language="C#" Class="MyWebPart.Code.FetchRecordsHandler" CodeBehind="FetchRecordsHandler.cs" %> 

そして、私は正しい名前空間にIHTTPハンドラを実装するクラスのFetchRecordsHandlerを作成:

namespace MyWebPart.Code 
{ 
    class FetchRecordsHandler : IHttpHandler 
    { 
     public void ProcessRequest(HttpContext context) 
     { 

      context.Response.Write("From the handler at " + DateTime.Now); 

     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 
} 

この方法は私のウェブの部分では機能しません。スクロールイベントからWebパーツへのajax呼び出しを行うためのソリューションの考え方、あるいは別のテクニックあなたが好きなものにあなたの.ashxを変更する必要が

Thxを

答えて

0

<%@ WebHandler Language="C#" Class="MyWebPart.Code.FetchRecordsHandler, {my assembly}, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx" %> 

{私のアセンブリは}(.dllはなし)コンパイルされた.dllの名前で、おそらくMyWebPartとxxxxxxxxxxxxxxxxは、アセンブリの公開鍵トークンです。これを見つける1つの方法は、あなたのWebパーツから配備された.ascxを見ることです。最初の行には同様のものが含まれていなければなりません。

あなたが受け取っている500のエラーは、SharePointが.ashxのアセンブリを読み込めないという事実と関係していると思います。イベントビューアーで詳細を見ることができます。

+0

私はこの作業を行う時間があまりかからなかったので、私は別の解決策を選択しました(codeBehindでaspxを使用しています)。私は時間がある最初の機会、私はあなたのソリューションをテストしています。どうも – Dino

関連する問題