Domanda

Ho una Domanda in classe:

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

Ora faccio un ICollection di questi disponibili attraverso un ObjectDataSource, e li visualizza con l'utilizzo di un Ripetitore legato all'Origine dati.Io uso <%#Eval("Domanda")%> per visualizzare la Domanda, e io uso una casella di testo e <%#Bind("Risposta")%> per accettare una risposta.

Se il mio ObjectDataSource restituisce tre oggetti, quindi il mio Ripetitore visualizza le tre domande con una casella di testo che segue ciascuna domanda per l'utente di fornire una risposta.

Finora funziona alla grande.

Ora voglio prendere la risposta dell'utente e rimetterlo in Questione classi, che io poi persistono.

Sicuramente il quadro dovrebbe prendere cura di tutto questo per me?Ho usato il metodo Bind, ho specificato un DataSourceID, ho specificato un metodo di Aggiornamento nel mio ObjectDataSource classe, ma non sembra esserci modo di kickstart il tutto.

Ho cercato di aggiungere un pulsante di Comando e il codice dietro la chiamata di MyDataSource.Update(), ma tenta di richiamare l'Aggiornamento del mio metodo senza parametri, piuttosto che la Domanda parametro che si aspetta.

Sicuramente c'è un modo semplice per realizzare tutto questo con poco o nessun codebehind?

Sembra che tutti i pezzi ci sono, ma c'è un po ' di colla manca di attaccare tutti insieme.

Aiuto!

Antonio

È stato utile?

Soluzione

Devi gestire l'evento di postback (pulsante o qualsiasi altra cosa) quindi enumerare gli elementi del ripetitore di simile a questo:

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
}

Altri suggerimenti

Il metodo bind davvero non è per il ripetitore, è più per il controllo formview o gridview, in cui si sta modificando un solo elemento nell'elenco non ogni elemento nella lista.

Su entrambi si fa clic su un pulsante modifica che poi dà i controlli associati (connesso con un bind) e poi ha colpito la salva collegamento che si auto salva il prodotto indietro nel tuo datasource senza alcun codice dietro.

Quindi qual è il punto nel metodo Bind (contro il metodo Eval) se devo associare tutto il backup manualmente su un postback?

Ben:Dopo aver provato, voce.DataItem è sempre nullo, e secondo il seguente post, non è progettato per essere utilizzato in questo modo:

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

Così come sulla terra faccio manualmente legare indietro?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top