Отмена удаления Row в DataGrid
От: Alexei_z_  
Дата: 10.01.05 18:33
Оценка:
Доброго дня,
С ВataGrid раньше не работал, в общем,
столкнулся со следующим вопросом:

Я удаляю строку(Row) из DataTable, который ранее был привязан к DataGrid

Но бывает ситуация, когда эдемент удалять не нужно В этом случае внешняя компонента кидает исключение.

Я делаю так: Перехватываю event OnDeleting(...)
В обработчике пытаюсь удалить, потом в любом случае формирую заново строки DataTable из памяти
Код очень похож на этот:

private void tRowDeleting(object sender, DataRowChangeEventArgs e)
{
    DataRow row = e.Row;
     string ElName = (string)row["Element Name"];
    try{
    CurrentList.Remove(ElName); ///список элементов, по которым строится DataTable если элемент удалить нельзя                                     ///- exception
    }
    catch(SomeMyException expt){
          MessageBox.Show(expt.Message,"Error!",MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    UpdateRows(SelectedConfig);
}
/////заново формирую DataRowCollection
private void UpdateRows(int Active)
{
    DataRow newRow;
    tElements.Rows.Clear(); //// is DataTable, MyDataGrid.DataSource = tElements
            
    for(int i = 0; i < CurrentList.Count; i++)
    {
           /////создаю новый ряд
        ListElement elem;
        newRow = tConfigs.NewRow();
        elem = (ListElement )CurrentList[i];
        newRow["Config Name"] = elem.CONFNAME;
        newRow["Active"] = false;
           /////////////// добавляю/////
        tElements.Rows.Add(newRow1);
    }
    tElements.Rows[Active]["Active"] = true; 
}

Метод UpdateRows(int) работает нормально. То есть формируется корректное количиство строк.

Проблема возникает, если я не удаляю строку.(то есть перехожу в блок catch(..))

В этом случае количество (отображаемое) строк все равно сокращается, не смотря на то, что UpdateRows(int) опять же правильно заполняет таблицу.
И в памяти и в DataGrid к-во строк разное

Если потом, например по кнопке"Test", вызвать UpdateRows еще раз, то все отображается нормально, то есть опять
количество строк в памяти = к-ву строк в DataGrid

В общем, вопрос такой: Как мне правильно (и где) сделать update DataGrid из памяти после удаления строки(удачного или нет) ?
А то че-то не получается у меня.

Спасибо
Отмена удаления Row в DataGrid
От: Аноним  
Дата: 10.01.05 19:18
Оценка:
Вам случайно не это нужно?:
Как вывести подтверждающее диалоговое окно, при попытке пользователя удалить строку путем нажатия кнопки DEL в DataGrid'e?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Отмена удаления Row в DataGrid
От: Alexei_z_  
Дата: 11.01.05 07:30
Оценка:
Здравствуйте, Alexei_z_, Вы писали:

A__>Доброго дня,

A__>С ВataGrid раньше не работал, в общем,
A__>столкнулся со следующим вопросом:

A__>Я удаляю строку(Row) из DataTable, который ранее был привязан к DataGrid


A__>Но бывает ситуация, когда эдемент удалять не нужно В этом случае внешняя компонента кидает исключение.


A__>Я делаю так: Перехватываю event OnDeleting(...)

A__>В обработчике пытаюсь удалить, потом в любом случае формирую заново строки DataTable из памяти
A__>Код очень похож на этот:

A__>
A__>private void tRowDeleting(object sender, DataRowChangeEventArgs e)
A__>{
A__>    DataRow row = e.Row;
A__>     string ElName = (string)row["Element Name"];
A__>    try{
A__>    CurrentList.Remove(ElName); ///список элементов, по которым строится DataTable если элемент удалить нельзя                                     ///- exception
A__>    }
A__>    catch(SomeMyException expt){
A__>          MessageBox.Show(expt.Message,"Error!",MessageBoxButtons.OK, MessageBoxIcon.Error);
A__>    }
A__>    UpdateRows(SelectedConfig);
A__>}
A__>/////заново формирую DataRowCollection
A__>private void UpdateRows(int Active)
A__>{
A__>    DataRow newRow;
A__>    tElements.Rows.Clear(); //// is DataTable, MyDataGrid.DataSource = tElements
            
A__>    for(int i = 0; i < CurrentList.Count; i++)
A__>    {
A__>           /////создаю новый ряд
A__>        ListElement elem;
A__>        newRow = tConfigs.NewRow();
A__>        elem = (ListElement )CurrentList[i];
A__>        newRow["Config Name"] = elem.CONFNAME;
A__>        newRow["Active"] = false;
A__>           /////////////// добавляю/////
A__>        tElements.Rows.Add(newRow1);
A__>    }
A__>    tElements.Rows[Active]["Active"] = true; 
A__>}
A__>

A__>Метод UpdateRows(int) работает нормально. То есть формируется корректное количиство строк.

A__>Проблема возникает, если я не удаляю строку.(то есть перехожу в блок catch(..))


A__>В этом случае количество (отображаемое) строк все равно сокращается, не смотря на то, что UpdateRows(int) опять же правильно заполняет таблицу.

A__>И в памяти и в DataGrid к-во строк разное

A__>Если потом, например по кнопке"Test", вызвать UpdateRows еще раз, то все отображается нормально, то есть опять

A__>количество строк в памяти = к-ву строк в DataGrid

A__>В общем, вопрос такой: Как мне правильно (и где) сделать update DataGrid из памяти после удаления строки(удачного или нет) ?

A__>А то че-то не получается у меня.
A__>
A__>Спасибо

Никто не знает, или я плохо сформулировал?
Re: Отмена удаления Row в DataGrid
От: Аноним  
Дата: 11.01.05 09:00
Оценка:
Имхо, — "плохо сформулировал". Честно старался понять вопрос и код, но, увы...
Почему "DataTable, который ранее был привязан к DataGrid"? А к чему привязан DataGrid теперь?
Что значит "update DataGrid из памяти"? Делается попытка удаления из БД? Почему Вы добавляете записи в tElements в процессе удаления? Короче, я совсем ничего не понял, хотя и старался !

А ссылка SergeyP не помогла?
С уважением, Виктор.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Отмена удаления Row в DataGrid
От: mamoNT2005  
Дата: 11.01.05 10:45
Оценка:
Здравствуйте, Alexei_z_, Вы писали:

A__>Никто не знает, или я плохо сформулировал?


по-моему плохо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.