2012-10-13 3 views
5

텍스트 상자에서 데이터를 가져오고 단추를 클릭하여 해당 데이터를 GridView에 삽입하려고합니다. 클릭 할 때마다 새 행이 작성되어야하며 이전 행을 제거하면 안됩니다. 새 데이터를 입력하고 버튼을 클릭 할 때마다 이전 행이 삭제되고 새 행이 대신 저장됩니다. 다시 테이블 열을 만들 포스트 백마다 gridVIEWData();를 호출하기 때문입니다TextBox에서 데이터를 GridView에 삽입하는 방법

DataTable dt1 = new DataTable(); 
bool flag = false; 

private void gridVIEWData() 
{ 
    dt1.Columns.Add("pName", typeof(string)); 
    dt1.Columns.Add("pCategory", typeof(string)); 
    dt1.Columns.Add("price", typeof(string)); 
    dt1.Columns.Add("pQuantity", typeof(string)); 
    dt1.Columns.Add("totalPrice", typeof(string)); 
} 
protected void Button3_Click(object sender, EventArgs e) 
{ 
    if (!flag) 
    { 
     gridVIEWData(); 
     flag = true; 
     Int32 total = Convert.ToInt32(txt_quantity.Text) * Convert.ToInt32(txt_price.Text); 
     DataRow dr = dt1.NewRow(); 
     dr["pName"] = DropDownList2.SelectedItem; 
     dr["pCategory"] = DropDownList1.SelectedItem; 
     dr["price"] = txt_price.Text; 
     dr["pQuantity"] = txt_quantity.Text; 
     dr["totalPrice"] = total; 
     dt1.Rows.Add(dr); 

     GridView1.DataSource = dt1; 
     GridView1.DataBind(); 
    } 
    else if (!IsPostBack) 
    { 
     Int32 total = Convert.ToInt32(txt_quantity.Text) * Convert.ToInt32(txt_price.Text); 
     DataRow dr = dt1.NewRow(); 
     dr["pName"] = DropDownList2.SelectedItem; 
     dr["pCategory"] = DropDownList1.SelectedItem; 
     dr["price"] = txt_price.Text; 
     dr["pQuantity"] = txt_quantity.Text; 
     dr["totalPrice"] = total; 
     dt1.Rows.Add(dr); 

     GridView1.DataSource = dt1; 
     GridView1.DataBind(); 
    } 
} 
+0

'Page_Load'는 어떻게됩니까? 단추의 이름을 바꾸는 것을 고려하십시오. 'Button3'의 목적은 분명하지 않습니다. –

답변

2

이전 데이터를 제거하십시오. 당신은 당신의 케이스에 어떤 데이터 테이블을 데이터 소스에 보관해야합니다. 일반적으로 파일 데이터베이스와 같은 데이터를 저장하기위한 영구 매체가 있습니다.

내가 이해할 수 있도록 세션에 데이터 테이블을 저장 하겠지만 일반적으로 연습하지는 않습니다. 데이터베이스에 저장하거나 원하는 매체를 저장해야합니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     gridVIEWData(); 
     GridView1.DataSource = dt1; 
     GridView1.DataBind(); 
    } 
} 

private void gridVIEWData() { 
    dt1.Columns.Add("pName", typeof(string)); 
    dt1.Columns.Add("pCategory", typeof(string)); 
    dt1.Columns.Add("price", typeof(string)); 
    dt1.Columns.Add("pQuantity", typeof(string)); 
    dt1.Columns.Add("totalPrice", typeof(string)); 
    Session["dtInSession"] = dt1;  //Saving Datatable To Session 
} 


protected void Button3_Click(object sender, EventArgs e) 
{ 
     if(Session["dtInSession"] != null) 
      dt1 = (DataTable)Session["dtInSession"]; //Getting datatable from session 

     Int32 total = Convert.ToInt32(txt_quantity.Text) * Convert.ToInt32(txt_price.Text); 
     DataRow dr = dt1.NewRow(); 
     dr["pName"] = DropDownList2.SelectedItem; 
     dr["pCategory"] = DropDownList1.SelectedItem; 
     dr["price"] = txt_price.Text; 
     dr["pQuantity"] = txt_quantity.Text; 
     dr["totalPrice"] = total; 
     dt1.Rows.Add(dr); 

     Session["dtInSession"] = dt1;  //Saving Datatable To Session 
     GridView1.DataSource = dt1; 
     GridView1.DataBind(); 

    } 
} 
+0

고맙습니다. . 감사합니다 도움 .. .. –

+0

당신은 환영하지만, 세션 세션에 대해이 작은 의미가 아닙니다 http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx – Adil

+0

세션에 datatable을 저장하는 것이 좋지 않다고 생각합니다. 링크를 읽으십시오 http://stackoverflow.com/questions/12811932/using-session-to-store-datatable –

1

: 여기 내 코드입니다. 새로운 데이터 바인딩으로

DataTable dt1 = new DataTable(); 

private void gridVIEWData() { 
    dt1.Columns.Add("pName", typeof(string)); 
    dt1.Columns.Add("pCategory", typeof(string)); 
    dt1.Columns.Add("price", typeof(string)); 
    dt1.Columns.Add("pQuantity", typeof(string)); 
    dt1.Columns.Add("totalPrice", typeof(string)); 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     gridVIEWData(); 
     GridView1.DataSource = dt1; 
     GridView1.DataBind(); 
     Session["dt1"]=dt1; 
    } 
} 

protected void Button3_Click(object sender, EventArgs e) 
{ 
    if(Session["dt1"]!=null) dt1 = (DataTable) Session["dt1"]; 
    Int32 total = Convert.ToInt32(txt_quantity.Text) * Convert.ToInt32(txt_price.Text); 
    DataRow dr = dt1.NewRow(); 
    dr["pName"] = DropDownList2.SelectedItem.Text; 
    dr["pCategory"] = DropDownList1.SelectedItem.Text; 
    dr["price"] = txt_price.Text; 
    dr["pQuantity"] = txt_quantity.Text; 
    dr["totalPrice"] = total.ToString(); 
    dt1.Rows.Add(dr); 

    GridView1.DataSource = dt1; 
    GridView1.DataBind(); 
} 
+0

내 코드에서이 문제를 해결할 수 있습니까? 또는 내가 전화하는 곳에서 그것을 부른다. ?? –

+0

이제 메신저 'pName'열의 오류가 테이블에 속하지 않습니다. ... ( –

+0

고맙습니다 @jams ... 문제는 해결되었지만 답장을 보내 주시면 감사하겠습니다 ... –

관련 문제