ユーザーが入力した番号に基づいて、その場で複数のラベルを作成したいと考えています。たとえば、ユーザーがテキスト ボックスに 10 を書き込むと、10 個のラベルが ID label1 - label10 で作成され、それらのラベルに別のテキストを入れたいとします。c#のシャープなコードを使用してasp.netでそれを行う方法はありますか?
3228 次
2 に答える
0
テキスト ボックスの値を読み取り、ラベル コントロールのオブジェクトを作成して ID とテキスト プロパティの値を設定するループを実行します。
int counter = Convert.ToInt32(txtCounter.Text);
for(int i=1;i<=counter;i++)
{
Label objLabel = new Label();
objLabel.ID="label"+i.ToString();
objLabel.Text="I am number "+i.ToString();
//Control is ready.Now let's add it to the form
form1.Controls.Add(objLabel);
}
txtCounter
ユーザーが作成するラベルの数を入力する TextBox コントロールであり、form1 が runat="server" 属性を持つページ内のフォームであると仮定します。
于 2012-05-21T23:31:16.063 に答える
0
次のようなものから始める必要があります。
// get user input count from the textbxo
string countString = MyTextBox.Text;
int count = 0;
// attempt to convert to a number
if (int.TryParse(countString, out count))
{
// you would probably also want to validate the number is
// in some range, like 1 to 100 or something to avoid
// DDOS attack by entering a huge number.
// create as many labels as number user entered
for (int i = 1; i <= count; i++)
{
// setup label and add them to the page hierarchy
Label lbl = new Label();
lbl.ID = "label" + i;
lbl.Text = "The Label Text.";
MyParentControl.Controls.Add(lbl);
}
}
else
{
// if user did not enter valid number, show error message
MyLoggingOutput.Text = "Invalid number: '" + countString + "'.";
}
もちろん、次のように修正する必要があります。
- あなたの実際のテキストボックスは何ですか
MyTextBox
- ラベルに含まれるテキスト。
MyParentControl
ページにラベルを追加するための親コントロール。- 番号が無効な場合の対処方法 (例:
MyLoggingOutput
. - 適切な検証。たとえば、ユーザーが 100 より大きい数値または 1 より小さい数値を入力できないようにします。
RangeValidator
カスタム コードまたはやなどの検証コントロールを使用して処理できますCompareValidator
。
于 2012-05-21T23:31:38.413 に答える