Intercepter une erreur de GridView [Résolu]

Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
- - Dernière réponse : equinoxe83
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
- 4 août 2007 à 10:50
Bonjour

existe t'il un moyen d'intercepter les erreurs effectuées dans un GridView dont la source de donnée est reglée sur une datasource (ObjectDatasource,SqlDatasource,LinqDataSource,AccessDataSource) déclarativement c'est a dire dans la page aspx

exemple je modifie une ligne dans mon gridview et je mets du texte dans un champ devant etre numerique .. automatiquement une exception sera levée

j'ai essayé dans l'evenement RowUpdating du GridView mais on ne recupere pas les valeurs OldValues ni NewValues bizarrement !!?? (tous les champs en edition renvoient des chaines vides)

pourtant il doit bien y avoir un moyen ce n'est pas possible que chez Microsoft ils n'y aient pas pensé

l'idéal serait de pouvoir verifier les valeurs saisies ..
> valider si celles ci sont correctes
> canceler et informer l'utilisateur de ce qui ne va pas

2 -
ha et puis pendant que j'y suis ..
au niveau du DataList pourquoi ne peut on   pas affecter la datasource dans le code Behind de la page ?
exemple :
dataList1.DataSource = uneCollectionQuelconque;
dataList1.DataBind();

merci
++

Se poser les bonnes questions ;) 
apporter les réponses
http://romagny13.over-blog.com/
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
3
Merci
A yé j'ai trouvé la (voir les) solutions

dans tous les cas il faut convertir les champs du GridView pouvant etre editer en ItemTemplate
puis modifier les modéles
puis on a 2 possibilités deja pour les textbox(ou autre controls) de l'EditItemTemplate

- soit on générer l'evenement TextChanged (il suffira alors de verifier la valeur)
- soit on peut carrement utiliser les controls de validation(requiredFieldValidator,RegexExpressionValidator,etc.) etc'est lavraiment interessant

donc si cela interesse du monde peut etre que je ferais une petite source, etj'y mettrais en plus tiens un exemple avec LinqDataSource
..

++

Se poser les bonnes questions ;) 
apporter les réponses
http://romagny13.over-blog.com/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 208 internautes nous ont dit merci ce mois-ci

Commenter la réponse de romagny13
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
0
Merci
Salut,

pour ta 1ère question, regarde du côté des évènements sur les cellules de ton GridView (CellContentChanged ou quelquechose dans le style...).

En ce qui concerne ta 2ème question, je ne sais pas, je n'utilise pas ce contrôle.

<hr />
@+  
Commenter la réponse de cs_drahcir
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
0
Merci
1 - il ne me semble pas que le gridview ait un evenement cellcontentchanged
d'autres idées :p ?

2 -
Pour la DataList je pense avoir trouver il faut définir l'itemtemplate et definir pour chaque webcontrol le champ que celui-ci affichera avec Eval("nomchamp")

exemple

<form
id="form1"
runat="server">

<asp:DataList
ID="DataList1"
runat="server">
<ItemTemplate>
ContactID:

<asp:Label
ID="ContactIDLabel"
runat="server"
Text='<%# Eval("ContactID") %>
'
/>
<br
/>
Contactname:

<asp:Label
ID="ContactnameLabel"
runat="server"
Text='<%# Eval("Contactname") %>
'
/>
<br
/>
ContactAge:

<asp:Label
ID="ContactAgeLabel"
runat="server"
Text='<%# Eval("ContactAge") %>
'
/>
<br
/>
ContactCategoryID:

<asp:Label
ID="ContactCategoryIDLabel"
runat="server" 
Text='<%# Eval("ContactCategoryID") %>
'
/>
<br
/>
</ItemTemplate>
</asp:DataList>

</form>

puis dans le code behind :

protected
void Page_Load(
object sender,
EventArgs e)
{

// apres avoir charger la liste de contacts
DataList1.DataSource = Contacts;
DataList1.DataBind();
}

apres je peux affecter la datasource depuis le code behind (sans cela le datalist n'affiche rie) il ne doit pas avoir "une intellignece" comme le gridview pour créer automatiquement les colonnes

Se poser les bonnes questions ;) 
apporter les réponses
http://romagny13.over-blog.com/
Commenter la réponse de romagny13
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
0
Merci
Salut,
Pour info, Microsoft propose ausi une approche "métier" via ADO (surtout en cas de contrôles multiples). 
C'est un peu complexe à mettre en oeuvre mais après, c'est du velour!
http://msdn2.microsoft.com/en-us/library/aa581776.aspx
pour la DAL et
http://msdn2.microsoft.com/en-us/library/aa581779.aspx
pour la BLL (là ou justement tu testes la cohérence des données retournées à la base).
@+
Commenter la réponse de equinoxe83