2012-03-12 11 views
0

私もまた、ボタンをクリックしてセッション/ビュー状態を変更する

私は現在のページに、建物をリストするusercontrolを含んでいます。

ここ

はスクリーンショットです:今http://i40.tinypic.com/2eusoyt.png

、私のメンターは、インクルードがページを作り、ユーザーが2列のプロパティを表示できるボタンを構築するために私に尋ねました。

どうやって試しましたか? 私は私をPage_Loadに次のように入れてみました:

  if (ViewState["numberOfColumns"] != null) 
      { 
       numberOfColumns= Int32.Parse(ViewState["numberOfColumns"].ToString()); 

      } 
      else 
      { 
       ViewState["numberOfColumns"] = 1; 
       numberOfColumns= 1; 
      } 

は、次にボタン・ビューの後ろに、私はこのコードを置く:

 protected void btnView_Click(object sender, EventArgs e) 
    { 
     switch(numberOfColumns) 
     { 
      case 1: 
       numberOfColumns= 2; 
       ViewState["numberOfColumns"] = numberOfColumns; 

       break; 
      case 2: 
       numberOfColumns= 1; 
       ViewState["numberOfColumns"] = numberOfColumns; 
       break; 
     } 

    } 

をしかし、私は、この方法はsessionvariableを設定するための1つのポストバックを必要とし、別の推測として、 1つは最新の値でページロードを実行します。

これを行うための「正しい方法」があるはずですが、見つけられません。

ご指摘いただいた直接のご指摘をいただければ幸いです。これは私がそれをやった方法です事前に

おかげで、クリストフ

+0

解答として答えを入れてください。その通りに従う。あなたは正当な時にあなたの答えを受け入れることができます。 –

+0

申し訳ありませんが、自分の質問に答えることができないので、私はできません。 「評判が100未満のユーザーは、質問後8時間は自分の質問に回答できません.1時間後に自己回答することができます。それまではコメントを使用するか、代わりに質問を編集してください。 編集:できるだけ早くこれをやります。 –

+0

可能ですが、システムは数時間後にあなたを許可します。 –

答えて

0

さて、

上記のスニペットの直後に、ユーザーコントロールの出力を構築するメソッドが呼び出されました。それは "GetProperties()"と呼ばれています。

ページサイクルに従って、.netは最初にPage_Loadを実行し、最後にコントロールイベントを実行します。

だから私が行ったのは、ifProperties()の呼び出しをifPostback = falseにしたときです。だから、あなたがページを一度訪れたら、それはメソッドをロードし、その後はもうロードしません。

したがって、ボタンをクリックすると、メソッドコールがボタンに表示されます。これは、ボタンIsPostback = trueをクリックすると発生します。

これは機能しました。

 protected void btnView_Click(object sender, EventArgs e) 
    { 
     switch (Int32.Parse(ViewState["kolommen"].ToString())) 
     { 
      case 1: 
       AantalKolommen = 2; 
       ViewState["kolommen"] = 2; 
       break; 
      case 2: 
       AantalKolommen = 1; 
       ViewState["kolommen"] = 1; 
       break; 
     } 
     GetProperties(_tkth, _categorie, _verkochtverhuurd); 
    } 

これは魔法のように動作します。voidをPage_Load(オブジェクト送信者、EventArgsの電子) { が//いくつかの一般的なもの

  if (!IsPostBack) 
      { 
       ViewState["kolommen"] = 1; 
       AantalKolommen = 1; 
       GetProperties(_tkth, _categorie, _verkochtverhuurd); 
      } 
     } 

そして、私は次のようでしたボタンの後ろを保護 :以下のスニペット。 Altho、私はまだこれを知りたいです

関連する問題