1

ユーザーが入力した番号に基づいて、その場で複数のラベルを作成したいと考えています。たとえば、ユーザーがテキスト ボックスに 10 を書き込むと、10 個のラベルが ID label1 - label10 で作成され、それらのラベルに別のテキストを入れたいとします。c#のシャープなコードを使用してasp.netでそれを行う方法はありますか?

4

2 に答える 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 + "'.";
}

もちろん、次のように修正する必要があります。

  1. あなたの実際のテキストボックスは何ですかMyTextBox
  2. ラベルに含まれるテキスト。
  3. MyParentControlページにラベルを追加するための親コントロール。
  4. 番号が無効な場合の対処方法 (例: MyLoggingOutput.
  5. 適切な検証。たとえば、ユーザーが 100 より大きい数値または 1 より小さい数値を入力できないようにします。RangeValidatorカスタム コードまたはやなどの検証コントロールを使用して処理できますCompareValidator
于 2012-05-21T23:31:38.413 に答える