2012-01-31 8 views
1

グリッドビューへのドラッグ&のドロップを行っている瞬間、これらの新しい値に従ってデータベースを更新するために、WebMethodに新しい行の順序を送信します。WebMethodを呼び出した後にGridViewをバインドする方法は?

WebMethodを呼び出した後、WebフォームのGridViewを更新するにはどうすればよいですか?私がWebMethodからwebform要素にアクセスすることはできないと考えています。

Webメソッド:

[WebMethod] 
public static void GridViewCarriersReorders(string Reorder) 
{ 
    Boolean result; 
    string[] ListID = Reorder.Split('|'); 
    transactions tr = new transactions(); 
    result = tr.updateLcrPriorities(ListID); 
    //updateGridViewCarriers(); //SOMETHING LIKE THIS IS NEEDED TO DO THE BINDING 
} 

おかげであなたの助けと理解のためにたくさん。

UPDATE:これは私がWebメソッドを呼び出しています方法です:

$.ajax({ 
    type: "POST", 
    url: "lcrP.aspx/GridViewCarriersReorders", 
    data: '{"Reorder":"' + strorder + '"}', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: true, 
    cache: false, 
    success: function (msg) { 
     $.jGrowl("The Carriers priority was successfully updated", { theme: "succeeded" }); 
    } 
}) 
+0

Javascriptを使用してAjaxポストバック、JQuery.Delay()またはsetTimeoutを実行しましたか? – Lloyd

+0

@Lloyd実際には、私はajaxを使ってwebmethodを呼び出しています。しかし、GridViewの更新にどのように使用するのか分かりません。何か案が? – aleafonso

+0

これを行うにはjavascriptを試してみましたか? [this post](http://viralpatel.net/blogs/2009/03/dynamically-add-remove-rows-in-html-table-using-javascript.html)を参照してください。 WebMethodから成功を収めたら、行を作成してGridViewに追加します(これは実際にテーブルです)。 –

答えて

1

あなたはGridViewの周りのUpdatePanelを置く場合、あなたはそれだけのためのポストバックを呼び出すことができます。

success: function (msg) { 
     $.jGrowl("The Carriers priority was successfully updated", { theme: "succeeded" }); 
     __doPostBack('UpdatePanel1', ''); 
    } 

編集: あなた自身が見つけたように、私はOnLoadイベントでグリッドのデータバインドを強制する必要があります。

void OnLoad(EventArgs e) { 
    base.OnLoad(e); 
    myGrid.DataBind(); 
} 

グリッドがxDataSourceコントロールにバインドされている場合は、グリッドのビューステートを無効にすることができ、各ポストバック時に強制的にデータバインドを行うことができます。

+0

お返事ありがとうございます。しかし、それはまったく機能しません。私はちょうどそれをデバッグし、これは現在の動作です:1)WebMethodを呼び出し、新しい値でデータベースを更新します。 2)提案したポストバックを実行します。 3)webformを以前の状態にリロードします。つまり、実際にはDB内で変更が加えられたにもかかわらず、古いGridViewの行順になります。これは手動で情報を選択することで確認できます。他のアイデアは高く評価されます – aleafonso

+1

最終的に、私はUpdatePanelのOnLoadイベントを作成し、そこからGridViewを再バインドすることでそれを実行できました。あなたが答えにそれを加えることができるなら、それはクールだろう。どうもありがとう。 – aleafonso

+0

申し訳ありませんが、私はそれを逃した。私は自分の答えを更新した – onof

関連する問題