-1

割り当てられたcheckedChangedイベントでそれらすべてに動的にチェックボックスを作成します。ポストバック時に再作成し、1つを除いてすべてが機能しています。

  • チェックされたチェックボックスの値を List に保存する必要があります。しかし、各 postBack イベントで(チェックボックスをチェックするたびに)リストの要素が失われてmycheいるようですが、タイプ List のグローバル変数です。

lblProba.Text +="in if 句; 要素 count="+ myche.Count.ToString();

チェックボックスをチェックするたびに1をくれ ます

protected void checkChanged(object sender, EventArgs e)
{
        CheckBox chk = (CheckBox)sender;
        if (chk.Checked)
        {
            myche.Add(chk.InputAttributes["value"].ToString());
            lblProba.Text +="in if clause; element count="+ myche.Count.ToString();


        }

        else 
        {
            lblProba.Text += "enering else;element count:"+myche.Count.ToString();




        }

            lblProba.Text += "Final length" + myche.Count.ToString();
            for (int t = 0; t < myche.Count; t++)
        { 
            Session["chk"]+= myche[t]; 

        }


}
4

3 に答える 3

1

ASP.NET ページのライフサイクルを確認する必要があります。ページを呼び出すたびに、ASP.NET はページの新しいインスタンスを作成し、Viewstate データ (これがポストバックの場合) をロードして、制御を Load イベントに渡します。ページがブラウザーに応答を送信すると、インスタンスは破棄されます。

ASP.NET は、静的に作成されたコントロールの ViewState を自動的に管理します。動的コントロールを再構築して設定するために必要なデータが ViewState に保存され、Loaded イベントでそれらを再構築するために使用されることを確認する必要があります。

于 2013-06-20T09:42:46.000 に答える
1

Web アプリケーションでは、すべてのポストバックがアプリケーションのまったく新しい開始につながると考えることができます。状態は記憶されず、アプリケーションが初めて実行されたかのように、すべてのオブジェクトがインスタンス化されます。

ASP.NET は ViewState などを使用してこの事実を隠そうとしますが、それでもサーバー側のオブジェクトは単一の要求/応答サイクルを超えて存続しません。

複数のリクエストで状態を保持するには、Session変数に中間値を格納できます。

于 2013-06-20T09:41:57.893 に答える
0

ポストバックごとにリストが失われないように、たとえば Session オブジェクトにリストを保存する必要があります。

于 2013-06-20T09:42:20.640 に答える