1

ASP.NET ページに 16 個のテキスト ボックスがあり、それらのテキスト値を、文字列配列にあるさまざまな値と等しくなるように設定したいと考えています。

私の .ASPX ファイルでは、次のようにテキスト ボックスを定義しています。

<asp:TextBox ID="textbox1" runat="server" />

これは、現在コードビハインドで動作している方法です:

this.textbox1.Text = stringArray[0];
this.textbox2.Text = stringArray[1];
...
this.textbox16.Text = stringArray[15];

しかし、私はこのようなことをしたい:

int i = 0;
foreach (Textbox tb in GroupOfTextboxes)
{
 tb.Text = stringArray[i];
 i++;
}

「GroupOfTextboxes」を設定する最も簡単な方法は何ですか? 可能であれば、コード サンプルを参照してください。

4

4 に答える 4

4

配列またはオブジェクトListを作成するだけです:Textbox

Textbox[] textBoxes = new []{textbox1, textbox2, textbox3, ...};

Panelデータ構造を設定する別の、おそらくより簡単な方法は、すべてのテキストボックスを何らかのコンテナまたは他のコンテナに入れることです。次に、次のことができます。

TextBox[] textBoxes = myTextboxPanel.Controls.OfType<TextBox>().ToArray();

これは実行可能なオプションである場合とそうでない場合がありますが、より単純です。すべてのテキストボックスを入れることができ、他のテキストボックスを持たないある種のコンテナが必要です。

その後、forループを使用してコピーを実行できます。

for(int i = 0; i < textBoxes.Lenth; i++)
{
    textBoxes[i].Text = stringArray[i];
}
于 2012-12-27T20:15:26.613 に答える
1

次のように PlaceHolder にグループ化します。

<asp:placeholder id="plcHldrTextBoxes" runat="server">
    your text boxes here
</asp>

C# では、plcHldrTextBoxes のコントロールを反復処理します。

int i=0;
foreach (var textBox in plcHldrTextBoxes.Controls)
{
   //dangerous if the cast fails but you get the idea
   (textBox as TextBox).Text = stringArray[i];
   i++; 
}

Linq を使用した 2 行 (および上記よりも安全):

int i = 0;
place.Controls.OfType<TextBox>().AsParallel().ForAll(x => x.Text = stringArray[i++]);    
于 2012-12-27T20:14:08.507 に答える
1

「myTarget_」で始まり、その後に何かが続くすべての textbox.id に名前を付けてみてください。次に、LINQ を使用してテキスト ボックスのリストを見つけます。

(From voTB As WebControl In Form.Controls Where left(voTB.ID,9) = "myTarget_" Select voTB)

次に、ループを実行できます。

int i = 0;
foreach (Textbox tb in (From voTB As WebControl In
Form.Controls Where left(voTB.ID,9) = "myTarget_" Select voTB)) { 
tb.Text = stringArray[i];  i++; }

コードを少し調整する必要があるかもしれません。

于 2012-12-27T20:26:37.913 に答える
0

プレースホルダー/パネル/div が適切な選択のようです。次に、プレースホルダーのすべての子を要求できます。

別のオプションは、それらすべてに意味のある連続した名前を付けることです..次のように: stringArrayTextbox1 .. stringArrayTextboxN

次に、FindControlByID を使用してコントロールを取得します。

FindControlByID メソッドが一番気に入っています。これは、コンテナ コントロール内のテキスト ボックスの順序が配列の順序と一致する必要がないことを意味します。

于 2012-12-27T20:15:17.643 に答える