Доброго дня,
С В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 из памяти после удаления строки(удачного или нет) ?
А то че-то не получается у меня.
Спасибо
Здравствуйте, 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__>Спасибо
Никто не знает, или я плохо сформулировал?
Имхо, — "плохо сформулировал". Честно старался понять вопрос и код, но, увы...
Почему "DataTable, который
ранее был привязан к DataGrid"? А к чему привязан DataGrid
теперь?
Что значит "update DataGrid
из памяти"? Делается попытка удаления из БД? Почему Вы добавляете записи в tElements в процессе
удаления? Короче, я совсем ничего не понял, хотя и старался

!
А ссылка SergeyP не помогла?
С уважением, Виктор.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение