Comment gérer les exceptions avec un SqlDataSource
J'ai un SqlDataSource est de fournir des données à mon GridView. C'est tout ce que j'utilise sur mon formulaire, donc je n'ai PAS le code sous-jacent à tous. Mais quelque part, j'ai besoin d'un bloc TRY CATCH juste au cas où ma connexion est perdue. Quel code dois-je placer où?
Si j'obtiens une erreur que je veux que mon lblMessage Texte "Pas de connexion".
Modifier
Mon GridView dans ma Machine.aspx
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
Height="209px" PageSize="7" Width="331px" AllowSorting="True"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="Total" HeaderText="Total" ReadOnly="True"
SortExpression="Total" DataFormatString="{0:R#,###,###}" >
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="b134_rmcid" HeaderText="Machine" ReadOnly="True"
SortExpression="b134_rmcid" >
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="b134_recdate" DataFormatString="{0:d/MM/yyyy}"
HeaderText="Date" ReadOnly="True" SortExpression="b134_recdate" >
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
</Columns>
</asp:GridView>
Ma Connexion juste sous mon Gridview dans ma Machine.aspx
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ODBC_ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ODBC_ConnectionString.ProviderName %>"
SelectCommand="SELECT SUM(b134_nettpay) AS Total, b134_rmcid, b134_recdate FROM B134HRE"
onselected="SqlDataSource1_Selected">
</asp:SqlDataSource>
Mon Code dans mon fichier Code-Behind dans ma Machine.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "hello there";
SqlDataSource1.Selected += new SqlDataSourceStatusEventHandler(SqlDataSource1_Selected);
}
protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.ExceptionHandled)
{
lblError.Text = "There is a problem";
}
}
Et encore pour certains prêts lorsque je place un point d'arrêt dans ma Événement Sélectionné, il n'a même pas l'obtenir???
Pourquoi?
Vous devez vous connecter pour publier un commentaire.
Le SqlDataSource a un
Selected
événement. Ajouter un gestionnaire de cet événement comme ça, et de gérer les erreurs (afficher un message d'information, etc) dans ce gestionnaire.Désolé, mais vous allez avoir un peu de code dans le code-behind!
Modifier
En regardant ton code, je ne pense pas que vous êtes toujours de liaison de votre GridView, de sorte que votre SqlDataSource est de ne jamais essayer de sélectionner les données à partir de votre base de données.
Dans votre méthode Page_Load, ajoutez le code suivant:
Modifier
Essayer de changer de "onselected" à "OnSelected" sur votre SqlDataSource et supprimer la ligne de lier votre gestionnaire d'événement dans le code derrière.
Je suis perplexe, si cela ne fonctionne pas comme vous avez eu le plus simple possible exemple.
Encore modifier
Essayez plutôt ceci
vous avez besoin de gérer l'erreur de code derrière de votre Gridview_ItemInserting ou gridview_itemupdating de manière à feu avant de votre code sont soumis à la commande sql.
le faire aussi pour la mise à jour de
Je crois que vous voulez pour gérer l'événement Sélectionné de la SQLDataSource, et de vérifier le cas de l'argument de l'exception.
Créer un gestionnaire d'événement pour l'événement Sélectionné de la SqlDataSource, tester si une exception se produit, effectuer le reporting d'erreur que vous voulez, puis indiquer que vous l'avez maintenant géré l'erreur.