2016-04-21 3 views
1

Я пытаюсь передать GridView данных в данные table.Then сохранение этой таблицы данных для session.Why вывода, показанный в этом видеЭкспорта GridView в DataTable вопрос

Установите GridView источник данных в другой странице

GridView1.DataSource = (DataTable)Session["cart"]; 
GridView1.DataBind(); 

Out Помещенный

Pro Name        Unit Price Quantity Total Amount 
System.Web.UI.WebControls.GridViewRow    
System.Web.UI.WebControls.GridViewRow 

Код

foreach (GridViewRow row in GvProducts.Rows) 
    { 
     if (row.RowType == DataControlRowType.DataRow) 
     { 
      CheckBox chkRow = (row.Cells[0].FindControl("chkSel") as CheckBox); 
      if (chkRow.Checked) 
      { 
       string proid = row.Cells[1].Text; 
       string balance = row.Cells[3].Text; 
       string proname = row.Cells[2].Text; 
       string proqty = (row.Cells[5].FindControl("txtQuantity") as TextBox).Text; 
       string UnitPrice = row.Cells[6].Text; 
       DataTable tbl; 
       if (Session["cart"] == null) 
       { 
        tbl = new DataTable(); 
        tbl.Columns.Add("Pro Name"); 
        tbl.Columns.Add("Unit Price"); 
        tbl.Columns.Add("Quantity"); 
        tbl.Columns.Add("Total Amount"); 

       } 
       else 

       tbl = (DataTable)Session["cart"]; 
       DataRow row = tbl.NewRow(); 
       row[0] = proname; 
       row[1] = Convert.ToDecimal(UnitPrice); 
       row[2] = proqty; 
       row[3] = Convert.ToInt32(proqty) * Convert.ToDecimal(UnitPrice); 
       tbl.Rows.Add(row); 
       Session["cart"] = tbl; 
      } 
     } 
    } 

ваша помощь очень

принадлежало
+0

Вы можете поделиться тем, с какими проблемами вы столкнулись ... –

+0

, как вы можете видеть, я не получил ожидаемого результата – Ayman

ответ

3

@Ayman, проблема заключается в нижеуказанным части. Вы предоставляете ту же переменную для New Row.

DataRow row = tbl.NewRow(); 
       row[0] = proname; 
       row[1] = Convert.ToDecimal(UnitPrice); 
       row[2] = proqty; 
       row[3] = Convert.ToInt32(proqty) * Convert.ToDecimal(UnitPrice); 
       tbl.Rows.Add(row); 
       Session["cart"] = tbl; 

изменить это,

DataRow newRow = tbl.NewRow(); 
        newRow[0] = proname; 
        newRow[1] = Convert.ToDecimal(UnitPrice); 
        newRow[2] = proqty; 
        newRow[3] = Convert.ToInt32(proqty) * Convert.ToDecimal(UnitPrice); 
        tbl.Rows.Add(newRow); 
        Session["cart"] = tbl; 

вы создали объект для "GridViewRow" и "DataRow" с таким же именем.

Смежные вопросы