1private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)//이전 구매 명령은 buy라는 명령이 있는 LinkButton이라고 가정합니다.
2 {//키를 생성하고 장바구니에 추가합니다.
3 string pid=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//애완동물 번호 가져오기
4 if(e.CommandName=="buy")//명령어 이름이 buy이면 구매 의미
5 {
6 if(Session["bus"]==null)//먼저 장바구니가 존재하는지 확인하세요. 존재하지 않으면 장바구니를 만드세요.
7 {
8 System.Collections.Hashtable ht=new Hashtable();//먼저 해시 테이블을 생성합니다.
9 ht.Add(pid,1);//해시 테이블에는 키와 값이 하나씩 있습니다. 앞에는 애완동물 번호를, 뒤에는 구매 수량을 입력합니다.
10 Session["bus"]=ht;//해시 테이블을 세션 개체에 할당
11 }
12 else//존재한다면
13 {
14 Hashtable ht=(Hashtable)Session["bus"];//강제 유형 변환을 사용한 다음 Session["bus"]를 해시 테이블 개체 ht에 할당
15 if(ht[pid]==null)//해시 테이블에 해당 ID가 없으면,
16 {
17 ht[pid]=1;//그런 다음 직접 1로 설정합니다.
18}
19 else//해당 ID가 이미 있는 경우
20 {
21 ht[pid]=(int)ht[pid]+1;//그런 다음 원본을 꺼내고 1을 추가합니다.
스물 둘 }
23 Session["bus"]=ht;//마지막으로 세션 객체 업데이트
스물넷 }
25}
26
27}
읽는 방법은 다음과 같이 더 간단합니다.
this.DataList1.DataSource=(Hashtable)Session["bus"];//해시 테이블을 데이터 소스로 직접 사용하고,
this.DataList1.DataBind();//업데이트 수량 바인딩
1private void LinkButton1_Click(개체 전송자, System.EventArgs e)
2 {
3
4 foreach(DataListItem dl in this.DataList1.Items)//컬렉션 탐색
5 {
6 TextBox tb=(TextBox)dl.FindControl("TextBox1");//텍스트 상자 찾기
7 int newpid=Convert.ToInt32(tb.Text.ToString());//텍스트 상자에서 값을 찾습니다.
8
9 Label label1=(Label)dl.FindControl("key");//해시 테이블의 키 필드를 로드하는 컨트롤을 찾습니다.
10 string pid=label1.Text.ToString();//값 가져오기
11
12 Hashtable ht=(Hashtable)Session["bus"];//해시 테이블에 세션["bus"] 개체 할당 ht
13 int oldpid=(int)ht[pid];//원래 수량을 가져옵니다.
14
15 if(newpid!=oldpid)//텍스트 상자의 값이 원래 숫자와 같지 않으면 해시 테이블의 새 값으로 바꿉니다.
16 {
17 ht[pid]=newpid;
18}
19 Session["bus"]=ht;//마지막으로 세션 개체 업데이트
20}
스물 하나 }