Удаление записей из DataGrid
От: chorn Украина  
Дата: 20.10.03 08:33
Оценка:
Есть DataGrid с колонкой кнопок. При нажатии на кнопку необходимо удалить из DataSet соответствующую запись. При этом апдейт базы я не делаю, для того чтобы после удаления нескольких строк из DataSet была возможность отменить удаление. Проблема в том, что при удалении одной строки из DataSet (и,соответственно, возврате формы), появляется ранее удаленная строка. Подскажите пожалуйста как это делается.
Код удаления строки (в обработчике нажатия кнопки):


DataRow[] rows = this.myDataSet.Select("ID="+e.Item.Cells[0].Text);
                
foreach (DataRow row in rows)
{                    
    row.Delete();                
}                
this.myDataGrid.DataSource=this.myDataSet;                                      this.myDataGrid.DataBind();
Re: Удаление записей из DataGrid
От: mogadanez Чехия  
Дата: 20.10.03 08:42
Оценка:
Здравствуйте, chorn, Вы писали:

C>Есть DataGrid с колонкой кнопок. При нажатии на кнопку необходимо удалить из DataSet соответствующую запись. При этом апдейт базы я не делаю, для того чтобы после удаления нескольких строк из DataSet была возможность отменить удаление. Проблема в том, что при удалении одной строки из DataSet (и,соответственно, возврате формы), появляется ранее удаленная строка. Подскажите пожалуйста как это делается.

C>Код удаления строки (в обработчике нажатия кнопки):


C>
C>DataRow[] rows = this.myDataSet.Select("ID="+e.Item.Cells[0].Text);
                
C>foreach (DataRow row in rows)
C>{                    
C>    row.Delete();                
C>}                
C>this.myDataGrid.DataSource=this.myDataSet;                                      this.myDataGrid.DataBind();
C>


так а myDataSet ты где хранишь? при каждом постбеке загружаешь?
... << RSDN@Home 1.1 beta 2 >>
Re: Удаление записей из DataGrid
От: uzzy Россия  
Дата: 20.10.03 08:44
Оценка:
Здравствуйте, chorn, Вы писали:

C>Есть DataGrid с колонкой кнопок. При нажатии на кнопку необходимо удалить из DataSet соответствующую запись. При этом апдейт базы я не делаю, для того чтобы после удаления нескольких строк из DataSet была возможность отменить удаление. Проблема в том, что при удалении одной строки из DataSet (и,соответственно, возврате формы), появляется ранее удаленная строка. Подскажите пожалуйста как это делается.

C>Код удаления строки (в обработчике нажатия кнопки):


C>
C>DataRow[] rows = this.myDataSet.Select("ID="+e.Item.Cells[0].Text);
                
C>foreach (DataRow row in rows)
C>{                    
C>    row.Delete();                
C>}                
C>this.myDataGrid.DataSource=this.myDataSet;                                      this.myDataGrid.DataBind();
C>

AcceptChanges () ?
... << RSDN@Home 1.1 beta 2 >>
Re[2]: Удаление записей из DataGrid
От: chorn Украина  
Дата: 20.10.03 08:59
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, chorn, Вы писали:


C>>Есть DataGrid с колонкой кнопок. При нажатии на кнопку необходимо удалить из DataSet соответствующую запись. При этом апдейт базы я не делаю, для того чтобы после удаления нескольких строк из DataSet была возможность отменить удаление. Проблема в том, что при удалении одной строки из DataSet (и,соответственно, возврате формы), появляется ранее удаленная строка. Подскажите пожалуйста как это делается.

C>>Код удаления строки (в обработчике нажатия кнопки):


C>>
C>>DataRow[] rows = this.myDataSet.Select("ID="+e.Item.Cells[0].Text);
                
C>>foreach (DataRow row in rows)
C>>{                    
C>>    row.Delete();                
C>>}                
C>>this.myDataGrid.DataSource=this.myDataSet;                                      this.myDataGrid.DataBind();
C>>


M>так а myDataSet ты где хранишь? при каждом постбеке загружаешь?


myDataSet у меня мембер класса, загружаю его один раз:



private void Page_Load(object sender, System.EventArgs e)
{
    if!IsPostBack)
    {                
        myAdapter = new OracleDataAdapter("select * from MyTable",strConnect);    
        this.myDataSet = new DataSet();
        myAdapter.Fill(this.myDataSet);                                
        this.myDataGrid.DataSource=this.myDataSet;            
        this.myDataGrid.DataBind();                            
    }
}
Re[3]: Удаление записей из DataGrid
От: mogadanez Чехия  
Дата: 20.10.03 09:04
Оценка:
Здравствуйте, chorn, Вы писали:

C>Здравствуйте, mogadanez, Вы писали:


M>>Здравствуйте, chorn, Вы писали:


C>>>Есть DataGrid с колонкой кнопок. При нажатии на кнопку необходимо удалить из DataSet соответствующую запись. При этом апдейт базы я не делаю, для того чтобы после удаления нескольких строк из DataSet была возможность отменить удаление. Проблема в том, что при удалении одной строки из DataSet (и,соответственно, возврате формы), появляется ранее удаленная строка. Подскажите пожалуйста как это делается.

C>>>Код удаления строки (в обработчике нажатия кнопки):


C>>>
C>>>DataRow[] rows = this.myDataSet.Select("ID="+e.Item.Cells[0].Text);
                
C>>>foreach (DataRow row in rows)
C>>>{                    
C>>>    row.Delete();                
C>>>}                
C>>>this.myDataGrid.DataSource=this.myDataSet;                                      this.myDataGrid.DataBind();
C>>>


M>>так а myDataSet ты где хранишь? при каждом постбеке загружаешь?


C>myDataSet у меня мембер класса, загружаю его один раз:


C>


C>private void Page_Load(object sender, System.EventArgs e)
C>{
C>    if!IsPostBack)
C>    {                
C>        myAdapter = new OracleDataAdapter("select * from MyTable",strConnect);    
C>        this.myDataSet = new DataSet();
C>        myAdapter.Fill(this.myDataSet);                                
C>        this.myDataGrid.DataSource=this.myDataSet;            
C>        this.myDataGrid.DataBind();                            
C>    }
C>}
C>


стоп.... а между постбеками где он у тебя сохраняется??
из того кода что ты привел, после постбека myDataSet дожен быть равен null
... << RSDN@Home 1.1 beta 2 >>
Re[4]: Удаление записей из DataGrid
От: chorn Украина  
Дата: 20.10.03 13:27
Оценка:
Здравствуйте, mogadanez, Вы писали:


M>стоп.... а между постбеками где он у тебя сохраняется??

M>из того кода что ты привел, после постбека myDataSet дожен быть равен null

На даный момент я изменил код, сейчас датасет хранится в Session. Обработчик события нажатия кнопки выглядит так:

DataSet dsMyDataset = (DataSet) Session["dsMyDataset"];
DataRow[] rows;
rows = dsMyDataset.Tables[0].Select("ID="+e.Item.Cells[0].Text);                
foreach (DataRow row in rows)
{                    
     row.Delete();                                    
}                
Session["dsMyDataset"]=dsMyDataset;                
this.dgMyDatagrid.DataSource=dsMyDataset;                    
this.dgMyDatagrid.DataBind();


но проблема осталась...
Re[5]: Удаление записей из DataGrid
От: mogadanez Чехия  
Дата: 20.10.03 13:35
Оценка:
Здравствуйте, chorn, Вы писали:

C>Здравствуйте, mogadanez, Вы писали:



M>>стоп.... а между постбеками где он у тебя сохраняется??

M>>из того кода что ты привел, после постбека myDataSet дожен быть равен null

C>На даный момент я изменил код, сейчас датасет хранится в Session. Обработчик события нажатия кнопки выглядит так:


C>
C>DataSet dsMyDataset = (DataSet) Session["dsMyDataset"];
C>DataRow[] rows;
C>rows = dsMyDataset.Tables[0].Select("ID="+e.Item.Cells[0].Text);                
C>foreach (DataRow row in rows)
C>{                    
C>     row.Delete();                                    
C>}                
C>Session["dsMyDataset"]=dsMyDataset;                
C>this.dgMyDatagrid.DataSource=dsMyDataset;                    
C>this.dgMyDatagrid.DataBind();    
C>


C>но проблема осталась...


1. выделенная строка не нужна.
2. посмотри, после второго нажатия дебагером на статус строк удаленных в первый раз, должно быть deleted
... << RSDN@Home 1.1 beta 2 >>
Re[6]: Удаление записей из DataGrid
От: chorn Украина  
Дата: 20.10.03 13:58
Оценка:
Здравствуйте, mogadanez, Вы писали:


M>1. выделенная строка не нужна.

M>2. посмотри, после второго нажатия дебагером на статус строк удаленных в первый раз, должно быть deleted

Там Unchanged
Re[6]: Удаление записей из DataGrid
От: mogadanez Чехия  
Дата: 20.10.03 14:01
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, chorn, Вы писали:


C>>Здравствуйте, mogadanez, Вы писали:



M>>>стоп.... а между постбеками где он у тебя сохраняется??

M>>>из того кода что ты привел, после постбека myDataSet дожен быть равен null

C>>На даный момент я изменил код, сейчас датасет хранится в Session. Обработчик события нажатия кнопки выглядит так:


C>>
C>>DataSet dsMyDataset = (DataSet) Session["dsMyDataset"];
C>>DataRow[] rows;
C>>rows = dsMyDataset.Tables[0].Select("ID="+e.Item.Cells[0].Text);                
C>>foreach (DataRow row in rows)
C>>{                    
C>>     row.Delete();                                    
C>>}                
C>>Session["dsMyDataset"]=dsMyDataset;                
C>>this.dgMyDatagrid.DataSource=dsMyDataset;                    
C>>this.dgMyDatagrid.DataBind();    
C>>


C>>но проблема осталась...


M>1. выделенная строка не нужна.

M>2. посмотри, после второго нажатия дебагером на статус строк удаленных в первый раз, должно быть deleted

=))) значит исследуй свой код и ищи где у тебя теряется статус deleted
... << RSDN@Home 1.1 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.