J'ai une ObjectDataSource que je lie à un contrôle DetailsView. J'ai la méthode d'insertion écrite dans une couche de gestion (qui appelle dans une couche de données) et tout fonctionne bien .. jusqu'à ce que je veux faire quelque chose d'autre avant que la méthode d'insertion se déclenche. Avant de passer à ma couche de gestion j'ai besoin d'accéder à un contrôle fileupload. J'ai donc câblé un événement ItemCommand sur DetailsView - il récupère l'événement et je peux faire ce dont j'ai besoin avec le contrôle FileUpload. Dans ce cas, j'appelle la méthode insert dans la couche de gestion - la même méthode que celle spécifiée dans le contrôle ObjectDataSource. Mais la méthode Insert se déclenche deux fois! Après y avoir réfléchi un instant, je réalise que c'est le comportement attendu - il est déclenché une fois lorsqu'il est appelé depuis l'événement ItemCommand, et la seconde fois depuis ObjectDataSource InsertMethod.ObjectDataSource Méthode d'insertion
Je pensais que je pourrais simplement supprimer l'attribut InsertMethod du ObjectDataSource pour éliminer la double feu sur cette méthode, mais quand je fais ce que je reçois cette erreur:
Inserting is not supported by ObjectDataSource 'objStudentDetails' unless the InsertMethod is specified.
Ainsi est-il possible que je peux dire ObjectDataSource ne déclenche pas la méthode? Voir code code simplifié ci-dessous:
<asp:DetailsView ID="dtvStudentDetails"
runat="server"
AutoGenerateRows="False"
DataSourceID="objStudentDetails"
OnItemCommand="dtvStudentDetails_ItemCommand">
:
:
</asp:DetailsView>
<asp:ObjectDataSource ID="objStudentDetails"
runat="server"
TypeName="AIMLibrary.BLL.Students"
SelectMethod="GetStudentDetails"
UpdateMethod="UpdateStudent">
:
:
</asp:ObjectDataSource>
public static Int32 InsertStudent(Int32 studentId, String firstName, String lastName, String employer, String phone, String email, String address, String city, String state, String zip, String dob, String cardImagePath)
{
StudentDetails record = new StudentDetails(firstName, lastName, employer, phone, email, address, city, state, zip, dob, cardImagePath);
StudentsProvider provider = new StudentsProvider();
return provider.InsertStudent(record); //actual insert happens in here..
}
fonctionne très bien! Je ne sais pas comment j'ai raté ça - merci! – Tone
Un bon aperçu. –