1

ユーザー入力を受け取り、それをリストに入力するプログラムを作成しています。その部分はうまく機能しています。ただし、ユーザーは自分の入力を編集または削除する機能が必要です。リストから項目を削除する方法がわかりません。リストを作成するためのコードは次のとおりです。

[Serializable]
class Recipient
{
    public string Fname { get; set; }
    public string MInit { get; set; }
    public string Lname { get; set; }
    public string Suffix { get; set; }
    public string Amount { get; set; }
    public string Message { get; set; }
    public string Custom { get; set; }
    public string CardType { get; set; }
} protected void btnToCart_Click(object sender, EventArgs e)
{
    if (ValidateInput("Card Information"))
    { SetUI("Your Shopping Cart"); }
    else
    {
        return;
    }

    Recipient recipients = new Recipient();

    List<string> FName = (List<string>)ViewState["recipientList"];
    List<string> MInit = (List<string>)ViewState["recipientList"];
    List<string> LName = (List<string>)ViewState["recipientList"];
    List<string> Suffix = (List<string>)ViewState["recipientList"];
    List<string> Amount = (List<string>)ViewState["recipientList"];
    List<string> Message = (List<string>)ViewState["recipientList"];
    List<string> Custom = (List<string>)ViewState["recipientList"];
    List<string> CardType = (List<string>)ViewState["recipientList"];

    if (FName == null && MInit == null && LName == null && Suffix == null && Amount == null &&
            Message == null && Custom == null && CardType == null)
    {
        FName = new List<string>();
        MInit = new List<string>();
        LName = new List<string>();
        Suffix = new List<string>();
        Amount = new List<string>();
        Message = new List<string>();
        Custom = new List<string>();
        CardType = new List<string>();
    }

    recipients.Fname = txtFName.Text;
    recipients.MInit = txtMInit.Text;
    recipients.Lname = txtLName.Text;
    recipients.Suffix = ddlSuffix1.SelectedItem.ToString();
    recipients.Amount = txtAmount.Text;
    recipients.Message = ddlMessage.SelectedItem.ToString();
    recipients.Custom = txtCustom.Text;
    recipients.CardType = lblImage.Text;
    FName.Add(recipients.Fname);
    MInit.Add(recipients.MInit);
    LName.Add(recipients.Lname);
    Suffix.Add(recipients.Suffix);
    Amount.Add(recipients.Amount);
    Message.Add(recipients.Message);
    Custom.Add(recipients.Custom);
    CardType.Add(recipients.CardType);
    ViewState["recipientList"] = FName;
    ViewState["recipientList"] = MInit;
    ViewState["recipientList"] = LName;
    ViewState["recipientList"] = Suffix;
    ViewState["recipientList"] = Amount;
    ViewState["recipientList"] = Message;
    ViewState["recipientList"] = Custom;
    ViewState["recipientList"] = CardType;

    if (FName.Count == 1 && MInit.Count == 1 && LName.Count == 1 && Suffix.Count == 1)
    {
        lblCartName.Text = FName[0] + " " + MInit[0] + " " + LName[0] + " " + Suffix[0];
        lnkEdit1.Visible = true;
    }

    if (Amount.Count == 1 && Message.Count == 1 && Custom.Count == 1)
    {
        lblCartAmount.Text = "$" + Amount[0] + ".00";
        if (txtCustom.Text == string.Empty)
        {
            lblCartMessage.Text = Message[0];
        }
        else
        {
            lblCartMessage.Text = Custom[0];
        }
    }

はい、他にもありますが、とにかく、ユーザーが次のボタンをクリックすると、すべての入力情報を含む要約がユーザーに表示されます。フォームには、ユーザーが編集または削除を選択できる 2 つのリンクボタンもあります。私は次のバリエーションを試しました:

FName.Remove(受信者.fname); および FName.RemoveAt(0); たとえば、これらのどれも機能していません。それが私の問題です。どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

0

@rich.okelly が書いたように、ViewState を上書きします。次のようなものを使用します。

List<string> FName = (List<string>)ViewState["recipientListFName"];
List<string> MInit = (List<string>)ViewState["recipientListMInit"];
List<string> LName = (List<string>)ViewState["recipientListLName"];
List<string> Suffix = (List<string>)ViewState["recipientListSuffix"];
List<string> Amount = (List<string>)ViewState["recipientListAmount"];
List<string> Message = (List<string>)ViewState["recipientListMessage"];
List<string> Custom = (List<string>)ViewState["recipientListCustom"];
List<string> CardType = (List<string>)ViewState["recipientListCardType"];
于 2013-03-14T17:14:06.797 に答える