문제

그리드 뷰에서 '카트에 추가'버튼을 클릭 할 때 행 목록에서 itemid를 추가해야합니다.이 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();
        }
    }
}
도움이 되었습니까?

해결책

ArrayList가 어딘가에 저장되지 않았다는 것을 잊지 마십시오. 사용자의 세션에 저장해야하며 버튼이 세션에서 검색하여 발생하는 각 포스트 백에 사용자가 클릭 한 항목을 추가해야합니다.

편집 : 다음은 세션에 Arraylist를 저장하고 각 Postback에서 검색하는 방법에 대한 약간의 샘플입니다.

    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