2011-07-29 5 views
0

私がしたいことは、ウェブフォームなどでよく見られるものです。基本的には私のウェブフォームです。必要です。たとえば、私は単語を要求しますが、クリックするたびに追加のテキストボックスを表示するボタンを持つことで、複数の単語の入力を許可したいと考えています。今私がそれを実装しようとしている方法は、3つのテキストボックス(およびそれぞれに対応するボタン)を作成し、最初のものを表示したまま残りを隠すことです。アイデアは、テキストボックスに追跡グローバルvaribleが明らかにされるべきであることを次のようになり、その後、私はその上switchステートメントを実行し、適切なボックス明らかにする:クリックして新しいテキストボックスを表示するためのAspボタンの作成方法

<asp:TextBox ID="textBoxNewCanonical" runat="server"></asp:TextBox> 
<asp:Button runat="server" ID="buttonFind" Text="Find" Visible="false" OnClick="buttonFind_OnClick" /> 
<asp:TextBox ID="textBoxNewCanonical1" Visible="false" runat="server"></asp:TextBox> 
<asp:Button runat="server" ID="buttonFind1" Text="Find" Visible="false" OnClick="buttonFind_OnClick" /> 
<asp:TextBox ID="textBoxNewCanonical2" Visible="false" runat="server"></asp:TextBox> 
<asp:Button runat="server" ID="buttonFind2" Text="Find" Visible="false" OnClick="buttonFind_OnClick" /> 
<asp:Button runat="server" ID="btnMultipleCanonical" Text="Choose Another Canoical" OnClick="buttonChooseAnother_Click" /> 

を、ここでbuttonChooseAnother_Click

protected void buttonChooseAnother_Click(object sender, EventArgs e) 
{ 
    switch(CanonicalNum) 
    { 
     case 0: 
      textBoxNewCanonical1.Visible = true; 
      buttonFind1.Visible = true; 
      break; 
     case 1: 
      textBoxNewCanonical2.Visible = true; 
      buttonFind2.Visible = true; 
      break; 
     default: 
      break; 
    } 
    CanonicalNum = CanonicalNum+1; 
} 

ですCanonicalNumは0に設定されています。これはうまくいくはずですが、何が起きるかは、ボタンをクリックするとtextBoxNewCanonical1が表示され、次にクリックするときに何もしません。それを行うには良い方法があれば、私はそれを

を聞いて幸せになる だから私の質問は、誰もが私のコードで間違っているかもしれないものを教えてもらえます2倍 1であるとどのようにそれを修正する 2あなたが知りたいかもしれないことは、ボタンにアクセスできるようにする必要があることです。私はスイッチステートメントを使用して、1つのイベントハンドラでそれらを処理します。また、別のボタンクリックイベントで値を入力できるように、テキストフィールドにアクセスする必要があります。

編集:マスターページのサブページだけです。

答えて

0

ボタンをクリックするとポストバックが発生し、ページの再読み込み時にCanonicalNumが0にリセットされます。私はCanonicalNum保存するためにセッションを使用します。あなたのPage_Loadメソッドでは

を、これを追加します、あなたのボタンクリックイベントでは

if (!Page.IsPostBack) 
{ 
    CanonicalNum = 0; 
    Session["CanonicalNum"] = CanonicalNum; 
} 
else 
{ 
    CanonicalNum = (int)Session["CanonicalNum"]; 
} 

を使用すると、インクリメントした後、新たな価値を持つSessionオブジェクトを更新CanonicalNum:

Session["CanonicalNum"] = CanonicalNum; 

テキストボックスを表示したままにするには、buttonChooseAnother_Clickを処理するためにbuttonChooseAnother_Clickを更新する必要があります。そうでない場合、CanonicalNumと一致しないものは、postackでVisible = "false"に設定されます。

protected void buttonChooseAnother_Click(object sender, EventArgs e) 
{  

    switch(CanonicalNum)  
    {   
     case 0:    
      textBoxNewCanonical1.Visible = true;    
      buttonFind1.Visible = true; 
      break;   
     case 1: 
      textBoxNewCanonical1.Visible = true; 
      buttonFind1.Visible = true;    
      textBoxNewCanonical2.Visible = true; 
      buttonFind2.Visible = true;    
      break;   
     default:    
      break;  
    }  

    CanonicalNum = CanonicalNum+1; 
    Session["CanonicalNum"] = CanonicalNum; 

} 

あなたが達成しようとしていることを再訪したいと思うかもしれません。おそらくもっと良い方法があります。

+0

はい私はそれを行うより良い方法があると思いますが、私が望むようにテキストボックスを正しく動的に作成する方法がわかりませんでした。 – user843271

+0

それはすごくうれしく思っています。私はまだ少しのASPのノブですが、私は何かが私のカウンターでうんざりしていると思っていて、試したものがたくさんありましたが、セッションについてはわかりませんでした。私はまだよりよい解決策にはまだ開いています。 – user843271

0

私はこれをAjaxで行い、ボタンとテキストボックスをUpdatePanelの中​​に入れます。

次に、コードを使用してテキストボックスを作成します。唯一の複雑な部分は、テキストボックスを必要な場所に配置することです。そのためには、プレースホルダとCSSの組み合わせを使用する必要があります。

関連する問題