簡體   English   中英

如何將用戶輸入從文本框中添加到數組或arraylist

[英]How to add user input from textbox into an array or arraylist

我正在創建一個禮品卡應用程序,用戶可以在其中將收件人信息輸入到文本框中。 該應用程序允許用戶添加另一張禮品卡(最多5次)。 我試圖找到一種方法來將文本框輸入添加到array或arrayList中,以便稍后調用,並在其“購物車”中顯示該信息。 該應用程序在Visual Studio 2012中使用C#和Webform平台。到目前為止,對於arraList,我具有:

private ArrayList arrayList = new ArrayList();

protected void Page_Load(object sender, EventArgs e)
{
}

protected void btnEnter_Click(object sender, EventArgs e)
{
   arrayList.Add(txtFName.Text);

   if (arrayList.Count == 1)
   {
      lblFName.Text = arrayList[0].ToString();
   }

   if (arrayList.Count == 2)
   {
      lblFName.Text = arrayList[0].ToString();
      lblFName1.Text = arrayList[1].ToString();
   }
}

我相信我只需要一種增加輸入到數組中的方法,但是我不知道該怎么做。 在其他途徑上的任何幫助或建議將不勝感激

這是收件人信息面板以及購物車面板的代碼。 //

收件人信息:

需要接收Visa預付卡的人的姓名。 名稱將出現在卡上。

*名字:

中間初始:

*姓:

后綴:Jr. Sr. II III IV

名字,中間名首字母,姓氏和后綴的組合不能超過26個字符。

禮品卡信息:


整數必須在$ 25.00到$ 500.00之間,且沒有美元符號或小數。

*輸入金額:

個性化消息:祝一切順利恭喜恭喜畢業祝你好運周年快樂生日快樂玩得開心,因為剛結婚的聖誕快樂季節問候謝謝

或選擇
自定義消息:



  • 取消
  • 背部
  • 繼續
//

  //<asp:Panel ID="pnlCart" runat="server" Width="100%" Visible="false"> <asp:Panel ID="Panel1" runat="server" GroupingText="Card Choice 1" ForeColor="DarkBlue" Font-Bold="True" BorderStyle="NotSet" BorderColor="#E0E0E0"> <div class="container"> <div class="pair"> <div class="labelLeftBold"> Amount: </div> <div class="fieldRight"> <asp:Label ID="lblCartAmount" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> <div class="labelLeftBold"> Card Design: </div> <div class="imgCard"> <asp:Image ID="imgCardChoice1" runat="server" /> </div> <div class="fieldRight"> <asp:Label ID="lblCartDesign" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> <div class="labelLeftBold"> Name on Card: </div> <div class="fieldRight"> <asp:Label ID="lblCartName" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> <div class="labelLeftBold"> Message on Card: </div> <div class="fieldRight"> <asp:Label ID="lblCartMessage" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> </div> </div> </asp:Panel> <br /> <div class="container1"> <asp:Panel ID="Panel2" runat="server" GroupingText="Card Choice 2" ForeColor="DarkBlue" Font-Bold="True" BorderStyle="NotSet" BorderColor="#E0E0E0"> <div class="pair"> <br /> <div class="labelLeftBold"> Amount: </div> <div class="fieldRight"> <asp:Label ID="lblCartAmount1" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> <div class="labelLeftBold"> Card Design: </div> <div class="imgCard"> <asp:Image ID="imgCardChoice2" runat="server" /> </div> <div class="fieldRight"> <asp:Label ID="lblCartDesign1" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> <div class="labelLeftBold"> Name on Card: </div> <div class="fieldRight"> <asp:Label ID="lblCartName1" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> <div class="labelLeftBold"> Message on Card: </div> <div class="fieldRight"> <asp:Label ID="lblCartMessage1" runat="server" Font-Bold="true"></asp:Label> </div> <br /> <br /> </div> // </asp:Panel> 

如果只有5個值,則可以執行此操作。

string[] values = new string[5];

values[0] = lblFName.Text;
values[1] = lblFName2.Text; // etc

然后使用此設置文本框值

lblFName.Text = values[0];
lblFName2.Text = values[1];

values [i]是否等於null無關緊要,因為string可以是null值。

為什么不使用List

private void button1_Click(object sender, EventArgs e)
{
   Control[] aryCtrl = new Control[] { textBox1, textBox2, textBox3, dropdownlist1, dropdownlist2, dropdownlist3 };
   List<string> list = new List<string>();

   foreach (Control ctrl in aryCtrl)
   {
      list.Add(textbox1.Text);
      list.Add(textbox2.Text);
      list.Add(textbox3.Text);
      list.Add(dropdownlist1.Text);
      list.Add(dropdownlist2.Text);
      list.Add(dropdownlist3.Text);
   }
}

我創建一個Control[]數組:

Control[] aryCtrl = new Control[] { textBox1, textBox2, textBox3, comboBox1, comboBox2, comboBox3 };

我在foreach循環中使用它。 接下來,就像我在原始答案中提到的那樣,我創建了一個List對象來存儲來自文本框/下拉列表的數據。 最后,使用foreach循環,我遍歷Control[]數組並添加每個控件的.text值。

編輯。 這對您應該有用,OP!

好。 我想我知道您在這里想做什么。

創建一個簡單的類來存儲數據。

 Class Recipient
 {
      string Name { get; set; }
      string CreditCardName { get; set; }
      string Amount { get; set; }
      string Message { get; set; }
 }

顯然,您可以將數據類型更改為所需的任何類型(即,金額可以是兩倍)。

現在,您有了控制數組(從技術上來說甚至不需要),並且在button1_Click事件之外聲明了收件人列表。

Control[] aryCtrl = new Control[] { 
                                   txtName, 
                                   cbxCreditCardName, 
                                   txtAmount, 
                                   txtMessage };

var recipients = new List<Recipient>();

private void button1_Click(object sender, EventArgs e)
{
    if (recipients.Count < 5)
    {
       var recipient = new Recipient();

       recipient.Name = txtName.Text;
       recipient.CreditCardName = cbxCreditCardName.SelectedValue;
       recipient.CreditCardNumber = txtCreditCardNumber.Text;
       recipient.Amount= txtAmount.Text;
       recipient.Message= txtMessage.Text;

       recipients.Add(recipient);
    }
    else {
         //Provide user with message telling them that they can only have up to 5 recipients.
    }
}

有一種從列表中刪除收件人的方法也是一個好主意。

感謝您的幫助。 我使用ViewState和其他一些修改解決了該問題。

public partial class Test : System.Web.UI.Page
{
    [Serializable]
    class Recipient
    {
        public string name { get; set; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnEnter_Click(object sender, EventArgs e)
    {
        Recipient recipients = new Recipient();

        List<string> recipient = (List<string>)ViewState["recipientList"];


        if (recipient == null)
        {
            recipient = new List<string>();
        }
        recipients.name = txtFName.Text.Trim();
        recipient.Add(recipients.name);
        ViewState["recipientList"] = recipient;

        if (recipient.Count == 1)
        {
            lblFName.Text = recipient[0];
        }

        if (recipient.Count == 2)
        {
            lblFName1.Text = recipient[1];
        }

    }

暫無
暫無

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

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