0

サーバーへのポストバックを回避するために、ページ メソッド、Web メソッド、または場合によっては jQuery を使用して非同期的に呼び出したい Web フォームからの C# メソッドがあります。このメソッドは、他のメソッドを呼び出してツリービューを再構築し、検証を実行して、他の値も設定します。以下はコードの例です。

これを行う簡単な方法は何ですか?提供されているコード サンプルは、可能であれば大歓迎です。パネルの更新はありません..

protected void btnSubmit_Click(object sender, ImageClickEventArgs e)
{


        if (ValidateSelection() == true)
        {
            int ProductID = Convert.ToInt32(grdGetProducts.SelectedValue.ToString());


            if (Convert.ToInt32(ddBetTypeID.SelectedItem.Value) != 2)
            {
                SubmitProduct(Convert.ToInt32(ddProductTypeID.SelectedItem.Value), currentWeek, Convert.ToInt32(ddProductID.SelectedItem.Value), Convert.ToInt32(ddValue.SelectedItem.Value), Convert.ToInt32(ddCost.SelectedItem.Value), ProductID);
            }


            if (Convert.ToInt32(ddProductTypeID.SelectedItem.Value) == 2)
            {

                int price;
                price= 1;
                //if 1 open side then part 2
                if (txtProductID.Text != "0" && txt2ProductID.Text == "0")
                {
                    price= 2;

                }


            if (ProductID > 2)
            {
                BuildTree(currentTime, Convert.ToInt32(ddProductID.SelectedItem.Value), currentProduct);

            }




        }


}
4

1 に答える 1

2

更新パネルがなければ、確かに多くのクライアント側の JavaScript が必要になります。

私は常に動的テーブルでこのようなことを行っています。最初に行ったのは、データとディスプレイを分離することでした。同じことから始めるべきです。

どのデータが検証されているか、クライアントでデータを収集して Web メソッドに送信する方法を理解します。次に、この収集と投稿を行うクライアント スクリプトを作成する必要があります。クライアント スクリプトを使用して投稿した後、ajax 呼び出しのコールバックで、ページでレンダリングを行う必要があります。更新パネルがなければ、これはすべてあなた次第です。

更新パネルを使用しない場合の問題は、ツリービュー構造を再作成するか、クライアント側で操作する必要があることです。これは、すべての要素とそのイベント ハンドラーを置き換えることを意味します。これは、より複雑な ASP コントロールの場合、非常に困難な作業になる可能性があります。

レンダリングのためにサーバーが送り返す必要があるのは、ツリーが必要とするすべてのデータです。それが何であるかを理解するのはあなた次第です。

グリッドビューを使用して複雑なスタイルを作成すると便利なので、以前にグリッドビューを動的にレンダリングしたことがあります。次に、サーバーから取得したデータに基づいて、クライアントでスクリプトを使用して行を作成するだけです。ツリービューでこれに似たことができると思います。

encosia.comを読んで、jQuery、ajax、および ASP.NET の相互作用について多くのことを学びました。その個人は素晴らしいリソースです。

于 2013-03-22T16:25:59.627 に答える