Pahi2317 Ответов: 1

Как решить индекс, было вне диапазона. Должно быть неотрицательным и меньше размера коллекции.


Привет,

Может ли кто-нибудь это знать.

как решить индекс, было вне диапазона. должно быть неотрицательным и меньше размера
коллекция?

код есть:

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

HiddenField hfId = (HiddenField)gridData.Rows[gridData.SelectedIndex].FindControl("hfId");

ошибка, идущая по этой линии

 protected void lnkUpdate_Click(object sender, EventArgs e)
        {
HiddenField hg = (HiddenField)gridData.Rows[gridData.SelectedIndex].FindControl("hfId");
 try
                {
                    
                    List<SqlParameter> parameters = new List<SqlParameter>
                    {
                    };
                    parameters.Add(new SqlParameter("@P_APPLICATION_ID", hg));
                    parameters.Add(new SqlParameter("@P_APPLICATION_NAME", txtApplicationName.Text));
                    parameters.Add(new SqlParameter("@P_VERSION", txtAppVersion.Text));
                    parameters.Add(new SqlParameter("@P_DESCRIPTION", txtDesc.Text));
                    parameters.Add(new SqlParameter("@P_USER", lblName.Text));
                    parameters.Add(new SqlParameter("@P_MODE", "E"));

                    string strResponse = objAppFunctionModule.ExecuteNonQueryMethod(strUSP_APPLICATION_MST, parameters);
                    if (strResponse == "1")
                    {
                        divMessage.Visible = true;
                        divDelete.Visible = false;
                        lnkSave.Visible = true;
                        lnkAddNew.Visible = false;
                        lnkUpdate.Visible = false;
                        PopulateGrid();
                        ClearControls();
                    }
                    else
                    {
                        lblResponse.Text = "Record Not updated.";
                    }
                }


                catch (Exception ex)
                {
                    lblResponse.Text = ex.Message;
                }

F-ES Sitecore

Посмотрите, сколько строк находится в gridData.Rows, затем посмотрите на значение gridData.Свойства selectedIndex. Причина, по которой вы получаете ошибку, должна быть очевидна.

Laxmidhar tatwa technologies

Почему бы не использовать метод gridviename_rowupfating

Pahi2317

Спасибо за ваш ответ...но это уже решено.

1 Ответов

Рейтинг:
2

OriginalGriff

Сообщение об ошибке довольно явное: значение, которое вы используете для индексации массива, неверно - оно должно быть между 0 и числом элементов минус один.

При предположении, что выбранного элемента нет, поэтому индекс возвращает -1, и вы получаете ошибку - но без запуска вашего кода точно так же, как вы это делаете, мы не можем сказать. А мы не можем этого сделать!

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


CPallini

5.