1

ユーザーが受信者情報をテキストボックスに入力するギフトカードアプリケーションを作成しています。このアプリでは、ユーザーは別のギフト カードを追加できます (最大 5 回まで)。テキストボックスの入力を配列またはarrayListに追加して、後で呼び出してその情報を「ショッピングカート」に表示する方法を見つけようとしています。このアプリは、Visual Studio 2012 の Web フォーム プラットフォームを使用して C# で作成されています。

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>
4

4 に答える 4

0

わかった。私はあなたがここで何をしようとしているのか理解していると思います。

データを保存するための単純なクラスを作成します。

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

もちろん、データ型を好きなように変更できます(つまり、Amountはdoubleになる可能性があります)。

これで、コントロール配列(技術的には必要ありません)と受信者リストが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.
    }
}

リストから受信者を削除する方法があるのも良い考えです。

于 2013-03-08T17:49:19.800 に答える
0

助けてくれたすべての人に感謝します。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];
        }

    }
于 2013-03-12T20:05:36.033 に答える
0

値が 5 つしかない場合は、これを行うことができます。

string[] values = new string[5];

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

次に、テキストボックスの値を設定するには、これを使用します

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

文字列は null 値になる可能性があるため、values[i] が null と等しいかどうかは問題ではありません。

于 2013-03-08T15:35:01.257 に答える
0

なぜ使用しないの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!

于 2013-03-08T15:35:30.733 に答える