2011-02-10 15 views
0

私はupdatepanel内にgridviewを持っており、jqueryを使用してページメソッドを呼び出すjavascriptを持っています。私はajax呼び出しから受け取るパラメータに基づいてグリッドビューを更新するページメソッドをしたいと思います。私が持っているaspxページではページメソッドを使用したajax

function GetNewDate(thedateitem) { 

    DateString = (valid json date format that works) 

    $.ajax({ 
     type: "POST", 
     url: "./CallHistory.aspx/ResetDate", 
     contentType: "application/json; charset=utf-8", 
     data: DateString, 
     dataType: "json", 
     success: successFn, 
     error: errorFn 
    }) 
}; 

2):

1)JavaScriptでは、ページメソッドを呼び出す機能があります:

はこれまでのところ、私は次のことを持っています

public partial class Pages_CallHistory : System.Web.UI.Page 
{ 
    List<ViewCallHistoryModel> TheCallHistory; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      TheDate = new DateTime(2011, 1, 13); 
      LoadCallHistory(TheDate); 
      MyGrid.Datasource = TheCallHistory; 
      MyGrid.Databind; 
     } 
    } 

    protected void LoadCallHistory(DateTime TheDate) 
    { 
     linq query that fills the variable TheCallHistory 
    } 

    [WebMethod] 
    public static void ResetDate(DateTime TheNewDate) 
    { 
     var test = new Pages_CallHistory(); 
     var test2 = test.LoadCallHistory(TheNewDate.Date); 
     //test2 loads fine 

     test.GridCallHistory.DataSource = test2; 
     //this is not underlined but bugs at runtime 
     //Object reference not set to an instance of an object. 

     test.GridCallHistory.DataBind(); 
     test.MyPanel.Update(); 
     //this is not underlined but doesn't get executed because 
     //because it stops at the line above 

     //I'd like to update the content of 
     //the gridview on the page with the updated gridview. 
    } 
:後ろのコードで
<asp:UpdatePanel ID="MyPanel" runat="server"> 
     <ContentTemplate> 
       <asp:GridView ID="MyGrid"> 

3)

私がページメソッドでしたいのは、1)LoadCallHistoryを新しい日付パラメータで呼び出し、2)TheCallHistoryにある新しいデータで再グリッドするようにgridview MyGridに指示します。

私はこのページメソッドで苦労しています。それは動作していないと私は立ち往生している。これはどうですか?

+0

なぜ失敗しますか?結果は何ですか?ブレークポイントを入れてデバッグモードでコードをステップ実行して、 'TheCallHistory'に必要なデータがあることを確認しましたか?また、List のようなソースにgridviewをバインドできることは確かですか? –

+0

私はポストできるほど多くのページがありますが、一言で言えば、すべてがページの負荷で動作します。また、更新パネル内にソートやページングがあり、リフレッシュせずに動作します。これまで私が持っているページメソッドでは:\t \t var test = new Page_CallHistory(); \t \t test.LoadCallHistory(TheNewDate.Date); \t \t \t \t MyGridをバインドしてページに移動する必要があります。 – frenchie

答えて

1

OKソリューションは、JavaScriptで_doPostBackを使用することですので:

__doPostBack('MyPanel', DateString); 

ページの方法ではありませんupdatepanelsにポストバックを行うため、データのみを送受信するためのものです。

0

この関連質問hereに対する私の答えを見てください。つまり、グリッドの新しいインスタンスを作成し、その出力を手動で取り込みます。

+0

グリッドビューをデータソースにバインドする行が機能していません。私はそれを理解することはできません。ソリューション内でバインディングはどこにありますか? – frenchie

+0

私は "searchControl.Search()"という行を持っています。これは、 "myGrid.DataSource = dataSource; myGrid.DataBind();"のようなバインドを実行する場所です。これらを実行すると、RenderControl関数を使用してコンテンツを取得できます。 –

+0

これは私が既に持っている、例外をスローしている行です: "オブジェクト参照がオブジェクトのインスタンスに設定されていません。" – frenchie

関連する問題