2012-02-28 25 views
0

私はこれらの8つのテキストボックスを持っていますが、私のページでは非常に乱雑だと思っています。ですから、ユーザーがクリックするとテキストボックスを追加できるボタンを実装する方法を考えています。誰でも私を助けるアイデアや解決策を持っていますか?私はそれを感謝します。ありがとうございました。テキストボックスを自動的に追加する方法

+0

[Jquery - 非表示のフォーム要素をオンザフライで作成する](http://stackoverflow.com/questions/2408043/jquery-create-hidden-form-element-on-the -飛ぶ)。それともサーバサイドを望んでいますか?次に、例えば[こちら](http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx)をご覧ください。 – CodeCaster

+0

ここを見てみる:http://stackoverflow.com/questions/4630095/dynamic-textbox-on-linkbutton-click –

+0

可能であれば、ボタンが2つのテキストボックスを生成したい。 1つは費用のタイプ、もう1つは価格です。 tq –

答えて

0

あなたはjqueryのを使用して考えると、物事は非常に単純なことができます:今

<div id="text_box_container"> </div> 

<input type="button" value="text box inserter" id="text_box_inserter" /> 

のjavascript/jqueryの一部

$('#text_box_inserter').click(function(){ 
    $('#text_box_container').append('<input type="text" />'); 
}) 
0

これは、テキストボックスを作成し、id="divFirstName"divに追加します。 div

TextBox tbFirstName = new TextBox(); 
tbFirstName.ID = "tbFirstName"; 
tbFirstName.Attributes.Add("Name", "tbFirstName"); 

divFirstName.Controls.Add(tbFirstName); 

runat="server"は、それからちょうどあなたのクリックイベントにコードを配置する必要があります。 (私の名前は気になります。純粋に理解を深めることです)。

+0

ありがとうございます。しかし、私はクリックイベントに何を入れるべきかを知ることができますか? –

+0

私はあなたが何を意味するのか分かりません。 Textboxを追加するボタンがある場合は、上のコードをボタンのclickイベントメソッドに入れてください。私が今あなたを混乱させていたら、私に知らせてください。元の答えを編集します。 – AndersDaniel

+0

Lol。私は多分、私はいくつかの睡眠を取るべきだと思います。私はちょうど私のラップトップで無知主演8時間のように過ごした。しかし、とにかく、ありがとう!一度私はコーディングを試してみましょう:) –

2

おそらく、これを行う最もよい方法は、両方のテキストボックスをユーザーコントロールに配置することです。このユーザーコントロールは、両方のテキストボックスに属するすべてのロジックをカプセル化できます。 2つの値の差を計算することができます。たとえば、両方の検証などをすべてカプセル化します。このビットを1回書くだけです。

ページにプレースホルダを追加します。そのIDに "DynamicControlHolder"のIDを与えます。また、隠しフィールド - DynamicControlCountも必要です。これを使用して、追加した動的コントロールの数を保存できます。

二つの最も重要な概念は以下のとおりです。

  • rightdynamic controlsを追加ASP.Netが自動的にあなたのためにViewStateからの値 を移入して、ポストバックの間 IDを試してみて、maintain。それ以外の場合は、 を自分で管理する必要があります。初めてのページが読み込まれると、あなたは例えば、Page_Initで次のように行うことができます
  • ので

、:あなたは、あなたのページ上のボタンを使用している場合

{ 
    MyUserControl control = Page.LoadControl("~/path_to_my_usercontrol"); 
    control.ID = "MyUserControl1"; 
    DynamicControlCount.Value = "1"; 

    DynamicControlHolder.Controls.Add(control); 
} 

を、「コントロールを追加します。 」、そして、クリックハンドラで:

{ 
    int controlCount = Convert.ToInt32(DynamicControlCount.Value); 
    controlCount++; 

    //This section will add as many controls as i. 
    for(i = 1; i <= controlCount; i++) 
    { 
     MyUserControl control = Page.LoadControl("~/path_to_my_usercontrol"); 
     control.ID = String.Format("MyUserControl{0}", i);   
     DynamicControlHolder.Controls.Add(control);   
    } 

    DynamicControlCount.Value = Convert.ToString(controlCount); //Note this is problematic 
} 

第二部を制御する最も簡単な方法は、UpdatePanelを使用することです。この主な理由は、保有しているコントロールの数を更新すると、ページのライフサイクルの最後でこれを行い、ポストバックではポストバック時の値が増えないことがあります。また、ページ全体がポストバックされていない場合は、ユーザーの方が小さく見えるようになります。

これは、あなたを始められるようにするためのちょっとしたアイデアです。この種のもののために良いの参照はここにある:

Truly Understanding Dynamic Controls

ビューステートの組み合わせ、ページのライフサイクル、クライアント側のレンダリングやその他の要因は、トリッキーなのこの1を作るため、この周りにいくつかの読書を行う必要がありますが、最も興味深いASP.Netのテクニック

関連する問題