2009-05-14 15 views
0

グリッドビューの[カートに追加]ボタンをクリックすると、リストのアイテムからitemidを追加する必要があり、このitemidをarraylistに渡すことができました。グリッドビューのボタンをクリックすると、arraylistにアイテムを追加します。

しかし、問題は、ボタンをクリックするたびに、以前のitemidが新しい項目で上書きされることです。代わりにarraylistが展開されるようにします。

public partial class Drama_k : System.Web.UI.Page 
{ 
    string [email protected]"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ewap_k.mdf;Integrated Security=True;User Instance=True"; 
    ArrayList arrValues = new ArrayList(4); 

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName=="AddToCart") 
     { 
      int index = Convert.ToInt32(e.CommandArgument); 
      Session["item"] = GridView2.DataKeys[index].Value.ToString(); 
      arrValues.Add(Session["item"]); 
      GridView1.DataSource = arrValues; 
      GridView1.DataBind(); 
     } 
    } 
} 

答えて

1

を使用すると、ユーザーのセッションで、ボタンのセッションから取得し、ユーザーがクリックした項目を追加することによって引き起こされた各ポストバックでそれを格納する必要があり、ArrayListのがどこかに格納されていないことを忘れないでください。

編集:ここで、ArrayListをセッションに格納し、各ポストバックでそれを取得する方法のサンプルを少し紹介します。

public partial class _Default : System.Web.UI.Page 
{ 
    ArrayList array; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if(Session["array"] == null) 
     { 
      array = new ArrayList(); 
      Session.Add("array", array); 
     } 
     else 
      array = Session["array"] as ArrayList; 
     GridView1.DataSource = array; 
     GridView1.DataBind(); //Edit 2 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     array.Add(DateTime.Now); 
    } 
} 

ご質問がある場合はお知らせください。

+0

私はC#で私の知識はあまり良くありません。どのように私はこれを行うために訴えた。 ありがとう – pier

+0

このセッションのようです[[item "] = arrValues; – pier

+0

これはまさにこのようです。 – Konstantinos

1

ArrayListViewStateまたはSessionに保存するだけで、ポストバックの間にその値が保持されます。

関連する問題