[英]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預付卡的人的姓名。 名稱將出現在卡上。
*名字: //<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.