Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Update data from DataGrid (Web Form)  [new]
sh2
Member

Откуда:
Сообщений: 1
Настроил DataGrid на DataSet, но почему-то не работает обновление данных и сортировка.
Баг в обновлении данных состоит в том, что новые значений полей (которые пользователь изменил в TextBox-ах после нажатия на ссылку "Edit" - перехода в режим редактирования текущей записи - и на ссылку "Update" - окончание редактирование и самбит на сервер) не возвращаются!

Переход в режим редактирование записи - все работает ок:
private void grid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			grid.EditItemIndex = e.Item.ItemIndex;
			grid.DataBind();
                                      //После этого выбранная запись таблицы переходит в режим редактирования (появляются TextBox-ы)
		}

А метод, обрабатывающий Update данных, получает не новые значения полей таблицы (DataGrid-a), а предыдущие (сохраненные, а не измененные только что):


		private void grid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			p.Pat_LastName =((TextBox)grid.Items[e.Item.ItemIndex].Cells[1].Controls[0]).Text;
			
			p.Pat_FirstName = ( (TextBox) e.Item.Cells[2].Controls[0] ).Text;
			p.Pat_PatronymicName = ( (TextBox) e.Item.Cells[3].Controls[0] ).Text;
			p.Pat_IHNumber = ( (TextBox) e.Item.Cells[4].Controls[0] ).Text;
			p.Pat_Sex =  ( (TextBox) e.Item.Cells[5].Controls[0] ).Text[0];
			
// Вытаскиваем ID записи для дальнейшего Update-а

                                      DataRow row = ds.Tables[0].Rows[ e.Item.DataSetIndex ];
			p.Row_uid = row["row_uid"].ToString();

			

			try
			{
				updateData(p);
			}
			catch (System.Exception ex)
			{
				//proccess exception
				return;
			}

			
// Убираем режим редактирования
			grid.EditItemIndex = -1;
			grid.DataBind();
		}


Вот именнно здесь:
((TextBox)grid.Items[e.Item.ItemIndex].Cells[1].Controls[0]).Text;

должно лежать как я понимаю новое значение поля, которое я должен вытащить и сохранить в БД. А там лежит старое, что делать? Может я что-то пропустил?



Насчет сортировки. Вот зарегистрированный метод для сортировки:
private void grid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
		{
			//do sorting
			dv.Sort = e.SortExpression + " DESC";
                                      // можно плюс:
			//grid.DataBind();
		
		}

После нажатия на ссылку для сортировки (заголовок столбца) происходит обновление страницы, но сортировка не выполняется.
Причем e.SortExpression - проверил содержит реальное имя Data Field соответствующего столбца. Также у всех столбцов прописал Sort Expression совпадающим с Data Field.

Что неправильно, ведь все по БуКварю Масдаевскому делаю???
16 фев 05, 20:56    [1326373]     Ответить | Цитировать Сообщить модератору
 Re: Update data from DataGrid (Web Form)  [new]
OstapBender
Member

Откуда:
Сообщений: 8
Ochen' sil'no zavisit ve eto ot togo chto delaetsya v PageLoad i ViewStateEnable.
Poshi mne email yshteinm@hotmail.com skinu primer kak vse eto delaetsya
26 фев 05, 06:09    [1346753]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить