2011-01-18 6 views
0

Добрый день,Добавить новые строки в gridview перед отправкой в ​​базу данных

Я разрабатываю форму для размещения заказов онлайн.

Я получаю статью из combobox и получаю детали этой статьи, используя SQL-запрос. Все идет нормально.

Я положил эту статью в сетку. Для одной статьи все в порядке.

Я делаю выбор статьи, нажимаю кнопку вставки, и статья с деталями вставлена ​​в gridview.

Моя проблема заключается в том, как добавить несколько строк. Когда я нажимаю кнопку вставки, с другой статьей и деталями, я получаю только одну строку с перезаписанными данными.

После того, как все строки находятся в gridview, я, наконец, могу представить эти строки и обработать заказ.

Что я должен использовать, чтобы добавить столько строк, сколько мне нужно? ViewState? Состояние сессии?

Я прочитал несколько статей, но ни один из них не помог мне, как мне было нужно.

спасибо.

EDIT:

Я использую DataTable для хранения данных.

DataTable DT = new DataTable(); 

     DT.Columns.Add("Artigo"); 
     DT.Columns.Add("Descricao"); 
     DT.Columns.Add("IVA"); 
     DT.Columns.Add("PU"); 
     DT.Columns.Add("UN"); 
     DT.Columns.Add("Qtd"); 
     DT.Columns.Add("TotalLiq"); 

     try 
     { 
      int Qtd = Convert.ToInt32(Quantidade.Text); 
      int PrecoUnit = glb._precolente; 
      float TotalLiq = Qtd * PrecoUnit; 

      string str = "SELECT TOP 1 A.Artigo as Artigo, A.Descricao as Descricao, (SELECT Taxa FROM prisalviani.dbo.Iva WHERE Iva = A.Iva)AS IVA, A.UnidadeBase as UN FROM prisalviani.dbo.ARTIGO A where A.Artigo='" + result.ToString() + "'"; 

      ListaLentes = Motor.Consulta(ref str); 


      while (!ListaLentes.NoFim()) 
      { 
       DT.Rows.Add(ListaLentes.Valor("Artigo"), 
          ListaLentes.Valor("Descricao"), 
          ListaLentes.Valor("IVA"), 
          PrecoUnit, 
       ListaLentes.Valor("UN"), 
       Qtd, 
       TotalLiq 
       ); 
       ListaLentes.Seguinte(); 
      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 

ответ

1

описание, которое вы указали, немного расплывчато, какую структуру данных вы используете для хранения строк заказа? вы хотите реализовать что-то похожее на корзину?

вы можете реализовать свои собственные бизнес-сущности или использовать набор данных/данных для хранения новых записей, вы можете сохранить эти объекты в сеансе.

это немного помогает?

+0

Отредактированный вопрос с более подробной информацией. Да, это что-то вроде корзины. Я вставляю N строк в сетку, и когда у меня есть выбор, я отправляю и обрабатываю заказ. –

+0

Использование сеанса для хранения данных datatable решило проблему. –

1

Предполагая, что ваш DataGridView имеет 3 ячейки типа String,

Вы можете использовать:

object [] row1 = new object[] { "StringInCell1","StringInCell2","StringInCell3" } 
dataGridView.Rows.Add(row1); 

И если вам нужно отредактировать конкретные клетки вы можете сделать это с помощью:

dataGridView.Rows[rowIndex].Cells[cellIndex].Value = "newValue"; 
Смежные вопросы