2013-11-11 3 views
0

У меня есть кнопка, которая удаляет строки из DataGrid; один из столбцов - это столбец администратора. Мне нужна программа, чтобы проверить, является ли строка (или строки, поскольку она может удалить несколько строк), которая удаляется, является последней с Admin = true, так как удаление последнего администратора делает эту таблицу недоступной.Проверьте, удаляет ли последнюю строку с указанным значением в столбце

Код для удаления строк заключается в следующем:

connection.Open(); 
List<DataRow> theRows = new List<DataRow>(); 
for (int i = 0; i < funcDataGrid.SelectedItems.Count; ++i) 
{ 
    Object o = funcDataGrid.SelectedItems[i]; 
    if (o != CollectionView.NewItemPlaceholder) 
    { 
     DataRowView r = (DataRowView)o; 
     theRows.Add(r.Row); 
    } 
} 
foreach (DataRow r in theRows) 
{ 
    string a = r.Field<string>("usernameFunc"); 
    cmdSel = new MySqlCommand("DELETE FROM usersFunc WHERE usernameFunc='" 
     + a + "'", connection); 
    cmdSel.ExecuteNonQuery(); 

    int k = ds.Tables["funcionarios"].Rows.IndexOf(r); 
    ds.Tables[0].Rows[k].Delete(); 
} 

connection.Close(); 

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

ответ

1

У вас может быть переменная (статическая или нет, в зависимости от того, как вы реализовали свой класс) под названием ActiveAdmins. После загрузки вашего Datagrid вы можете легко запросить свою БД и получить количество администраторов.
Я предположим, что у вас есть логический столбец IsAdmin на ваших объектах.

в вашем foreach цикле, добавить что-то вроде:

if (r.Field<string>("IsAdmin")) 
    if (`ActiveAdmins` <= 1) 
     continue; 

Таким образом, всякий раз, когда вы удаляете, если это последний администратор ИЗУЧЕНИЕ, это будет просто перейти на следующую строку, оставив свой последний админ в таблице.

+0

Только что реализовано это успешно! Большое спасибо за подсказку. Я благодарю вас за исправление названия; У меня это было почти так же, как раньше, но подумал, что было бы легче понять этот путь, оказывается, это не так. – chaosflaw

+0

você é bem-vindo :) – Noctis

+0

Хахаха, посмотрел на мое место, не так ли? xD – chaosflaw

Смежные вопросы