GridView SelectedIndexChange с Try Catch Block неисправен в 2.0? - PullRequest
0 голосов
/ 14 декабря 2009

Я использую ASP.NET 2.0.

Когда я помещаю блок TRY CATCH в мое событие, он всегда переходит в раздел CATCH, в моем случае он перенаправляет страницу в Default.aspx. Но если я удаляю блок TRY CATCH, код get выполняется нормально, и он делает то, что должен.

Protected Sub gridResults1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gridResults1.SelectedIndexChanged

    Try

        Dim selectedRowIndex As Integer
        selectedRowIndex = gridResults1.SelectedIndex

        Dim row As GridViewRow = gridResults1.Rows(selectedRowIndex)
        Dim theCompanyProfile As String = gridResults1.DataKeys(selectedRowIndex).Value

        Response.Redirect("Report.aspx?ID=" + theCompanyProfile)

    Catch ex As Exception

        Response.Redirect("Default.aspx")

    End Try

End Sub
  • Нет сообщения об ошибке, когда я ставлю точку останова на "Catch ex As Exception"
  • Возможно, я неправильно прочитал значение selectedRowIndex DataKey?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

Это потому, что метод Response.Redirect прекращает выполнение потока страницы и выдает System.Threading.ThreadAbortException.

Вы можете перехватить исключение ThreadAbortException и игнорировать его (я полагаю, это не лучшая практика) или передать false для второго параметра (endResponse) методу Response.Redirect.

Проверьте эту страницу для получения дополнительной информации: http://support.microsoft.com/kb/312629

0 голосов
/ 14 декабря 2009

Просто чтобы быть уверенным, вы устанавливаете свойство DataKeyNames в GridView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...