Member 13006682 Ответов: 2

Исключение Argumentoutof range было необработано


при выполнении следующего кода, я получаю ошибку, как arugument вне диапазона исключения было обработано.индекс находился вне допустимого диапазона должно быть не отрицательным и усилитель; меньше, чем размер коллекции.имя параметра:индекс

Что я уже пробовал:

private void button3_Click(object sender, EventArgs e)
        {
            con.Open();
            cmd.Connection = con;
            if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1)
            {

               cmd.CommandText = "delete from sam where empid="+dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+" ";
                cmd.ExecuteNonQuery();
                //dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                MessageBox.Show("record deleted");
            }
            bind();
            con.Close();
        }

Member 13006682

пожалуйста, пришлите решение быстро.

Member 13006682

показывает ошибку в следующей строке моего кода:
если (dataGridView1.Строк.Count > 1& & amp; dataGridView1.SelectedRows[0].Индекс != dataGridView1.Строк.Количество-1)

Tim Ng

вы также должны проверить SelectedRows.Граф > 0 также

2 Ответов

Рейтинг:
2

Tim Ng

Я думаю, вам может понадобиться проверить

dataGridView1.SelectedRows.Count > 0 
вместо
dataGridView1.Rows.Count > 1
в вашем предложении if


Member 13006682

ладно.проблема решена. но в следующей строке есть исключение: исключение недопустимой операции было необработано. связь не была закрыта. текущее состояние соединения открыто.
кон.открыть();
OleDbDataAdapter da = new OleDbDataAdapter ("select * from sam", con);
DataTable dt = новый DataTable();
да.Заполнить(ДТ);
dataGridView1.Источник данных = ДТ;
против.Закрывать();

Karthik_Mahalingam

какая линия?

Tim Ng

Я полагаю, что вы еще не закрыли соединение в другой части вашего кода. Вы можете использовать SqlConnection.Состояние, чтобы увидеть, если ваше соединение уже открыто или нет.
Вам лучше использовать Using при создании соединения, потому что в конце инструкции Using соединение будет гарантированно удалено. См. следующую ссылку в качестве примера:
http://stackoverflow.com/questions/23185990/sqlcommand-with-using-statement

Рейтинг:
1

OriginalGriff

Цитата:
пожалуйста, пришлите решение быстро

Мы не можем.
Проблема в том, что вы получаете доступ к строкам только через SelectedIndex - и мы не можем запустить ваш код при тех же обстоятельствах, что и вы, поэтому мы не можем получить ту же ошибку, что и вы, по тем же причинам.
Поэтому используйте отладчик и выясните, какие части находятся вне диапазона - возможно, у вас нет выбранных строк, или у вас неправильный элемент управления, или ... мы не знаем и не можем узнать. Но вы можете-просто используйте отладчик и посмотрите, что происходит.


Garth J Lancaster

учиться у тебя я могу, терпение и мудрость у тебя есть :)

Member 13006682

пожалуйста, пришлите пример кода для удаления записи