Поймать SQLException из хранимой процедуры в виде сетки - PullRequest
1 голос
/ 12 августа 2011

У меня есть хранимая процедура (SP) с именем UPDATE_INFO, в этом SP я выбрасываю некоторые SQLExceptions

RAISERROR ('Exception Created',16,1);

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

Но я не знаю, как это сделать, я думаю, что Gridview уже перехватывает все исключения из SP

Кто-нибудь получит способ сделать это?

Кодчасть:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<asp:UpdatePanel ID="UpdatePane" runat="server">
<ContentTemplate >
    <asp:GridView ID="GridView" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ProjectID" 
        DataSourceID="DataSource" >
        <Columns>
            <asp:CommandField ShowEditButton="True" CausesValidation="false" />
            <asp:BoundField DataField="Name" HeaderText="Name"
                SortExpression="ProjectID"/>
        </Columns>
    </asp:GridView>

</ContentTemplate>
</asp:UpdatePanel>


    <asp:SqlDataSource ID="DataSource" runat="server" 
        ConflictDetection="CompareAllValues" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

        SelectCommand="SELECT" SelectCommandType="StoredProcedure" 
        UpdateCommand="UPDATE" UpdateCommandType="StoredProcedure">

        <UpdateParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="original_Name" Type="String" />
        </UpdateParameters>
    </asp:SqlDataSource>
    </asp:Content>

Ответы [ 2 ]

4 голосов
/ 12 августа 2011

Вам нужно обработать событие OnRowUpdated и определить, были ли какие-либо ошибки, подобные этой:

protected void GridView_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
        if (e.Exception != null)
        {
            //show nice error message however you want
            // I imagine by firing javascript on the page
            e.ExceptionHandled = true; //important not forgetting this
        }
}

В вашей разметке:

<asp:GridView ID="GridView" OnRowUpdated="GridView_RowUpdated" runat="server" AllowPaging = "True" ....

1 голос
/ 12 августа 2011

Чувак, ты все делаешь на странице aspx. В общем, все это делается в коде, где вы можете использовать ADO.NET с большим контролем над тем, что происходит, и вы можете вызывать хранимую процедуру внутри try-catch.

Возможно, есть также способ установить событие обработки исключений для запуска со страницы разметки aspx, которую вы используете, но я думаю, что лучше, если вы загрузите данные из метода в файл aspx.cs.

это то, что обычно делается в реальных приложениях.

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