Question

J'ai une Question à la classe:

class Question {
    public int QuestionNumber { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
}

Maintenant, je ICollection de ces disponibles par le biais d'un ObjectDataSource, et de les afficher à l'aide d'un Répéteur lié à la source de données.J'utilise <%#Eval("Question")%> pour afficher la Question, et j'ai utiliser une zone de texte et <%#Bind("Réponse")%> pour accepter une réponse.

Si mon ObjectDataSource retourne trois Question des objets, puis mon Répéteur affiche les trois questions avec une zone de texte à la suite de chaque question pour l'utilisateur de fournir une réponse.

Jusqu'à présent, il fonctionne très bien.

Maintenant je veux profiter de la réponse de l'utilisateur et de le remettre en Question les classes, je vais donc persister.

Sûrement, le cadre doit prendre soin de tout cela pour moi?J'ai utilisé la méthode Bind, j'ai spécifié un DataSourceID, j'ai spécifié une méthode de mise à Jour dans mon ObjectDataSource classe, mais il semble y avoir aucun moyen de kickstart l'ensemble de la chose.

J'ai essayé d'ajouter un bouton de Commande et dans le code-behind de l'appel de MyDataSource.Mise à jour(), mais elle tente d'appeler ma mise à Jour de la méthode sans paramètres, plutôt que la Question paramètre qu'il attend.

Il y a certainement un moyen facile de réaliser tout cela avec peu ou pas de code-behind?

Il semble que tous les bits sont là, mais il y a un peu de colle, manquant de les coller ensemble.

À l'aide!

Anthony

Était-ce utile?

La solution

Vous avez à gérer la publication de l'événement (clic de bouton ou autre) puis énumérer la répétition des éléments comme ceci:

foreach(RepeaterItem item in rptQuestions.Items)
{
   //pull out question
   var question = (Question)item.DataItem;
   question.Answer = ((TextBox)item.FindControl("txtAnswer")).Text;

   question.Save() ?  <--- not sure what you want to do with it
}

Autres conseils

La méthode bind n'est vraiment pas pour de la répétition, c'est plus pour le formview ou gridview, lorsque vous modifiez un élément dans la liste de tous les articles de la liste.

À la fois vous cliquez sur un bouton modifier qui vous donne les contrôles liés (relié à l'aide de bind), puis appuyez sur la enregistrer le lien automatique enregistre l'élément dans votre source de données sans aucun code derrière.

Alors quel est le point de la méthode Bind (par opposition à la méthode Eval) si j'ai de lier tout remettre en place manuellement sur la publication?

Ben:Pour l'avoir essayé, point.DataItem est toujours nulle, et selon le post suivant, il n'est pas conçu pour être utilisé de cette façon:

http://www.netnewsgroups.net/group/microsoft.public.dotnet.framework.aspnet/topic4049.aspx

Alors, comment sur terre je manuellement lier de nouveau?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top