GridViewの中ボタンがクリックされたときにArrayListにアイテムを追加します

StackOverflow https://stackoverflow.com/questions/865205

質問

私はGridViewの中で「add to cart」ボタンをクリックしたときに、私はこれはArrayListにITEMID渡すことができました。

行のリストからアイテムIDを追加する必要があります

しかし、問題は、私は、以前のアイテムIDが新しい項目で上書きされるボタンをクリックして毎回代わりに、私は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();
        }
    }
}
役に立ちましたか?

解決

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);
    }
}
あなたはまだ疑問を持っている場合は、

私に知らせます。

他のヒント

あなたはちょうどそれがポストバックの間でその値を保持しますので、ArrayListまたはViewStateにそのSessionを格納する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top