簡體   English   中英

動態生成文本框 asp.net

[英]Dynamically generating textboxes asp.net

我創建了一個 function 來根據從文本框中選擇的數量動態創建文本框,另外我正在使用這些文本框來顯示數據庫中的數據。 但是,當用戶從下拉列表中選擇了五個,並且已經存在三個文本框時,它不會再添加 2 個文本框,而是添加額外的 5 個文本框。 為了添加額外的文本框,我做了什么?

 protected void TotalSeal_SelectedIndexChanged(object sender, EventArgs e)
    {
        populate();
    }

  public void populate()
    {

        int count = Convert.ToInt32(TotalSeal.SelectedItem.Value);
        for (int i = 0; i < count; i++)
        {
            if (i < 0)
            {

            }
            else
            {

                TextBox tx = new TextBox();
                tx.MaxLength = 10;
                tx.Width = 100;
                phSealNum.Controls.Add(tx);
                phSealNum.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"));

                ControlCache.Add(tx);
            }
        }
    }

更新

  public void populate()
    {
        //ControlCache = new List<Control>();
        //phSealNum.Controls.Clear();

        int targetCount = Convert.ToInt32(TotalSeal.SelectedItem.Value);
        int currentItems = phSealNum.Controls.OfType<TextBox>().Count();
        int totalitems = targetCount - currentItems;
        if (totalitems <= 7)
        {
            for (int i = 0; i < totalitems; i++)
            {

                TextBox tx = new TextBox();
                tx.MaxLength = 10;
                tx.Width = 100;
                phSealNum.Controls.Add(tx);
                phSealNum.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"));

                ControlCache.Add(tx);
            }
        }
        else
        {
            lblError.Text = targetCount + " exceeds number of seals";
        }
    }

使用@indrit-kello 邏輯應該是這樣的:

protected void TotalSeal_SelectedIndexChanged(object sender, EventArgs e)
    {
        populate();
    }

    public void populate()
    {

        int targetCount = Convert.ToInt32(TotalSeal.SelectedItem.Value);

        if(targetCount > 7)
          targetCount = 7;

        int currentItems = 0;//TODO
        for (int i = currentItems; i < targetCount; i++)
        {
            TextBox tx = new TextBox();
            tx.MaxLength = 10;
            tx.Width = 100;
            phSealNum.Controls.Add(tx);
            phSealNum.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"));

            ControlCache.Add(tx);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM