0

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

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

public partial class Drama_k : System.Web.UI.Page
{
    string Cn=@"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();
        }
    }
}
4

2 に答える 2

1

配列リストがどこかに保存されていないことを忘れないでください。ユーザーのセッションに保存し、ボタンによって発生したポストバックごとにセッションから取得し、ユーザーがクリックした項目を追加する必要があります。

編集: 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);
    }
}

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

于 2009-05-14T19:31:50.470 に答える
1

それをorに保存するだけArrayListで、ポストバック間で値が保持されます。ViewStateSession

于 2009-05-14T19:32:53.713 に答える