Pregunta

Tengo una clase de preguntas:

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

Ahora hago una ICollection de estos disponibles a través de un ObjectDataSource y los muestro usando un repetidor vinculado al DataSource.yo suelo <%#Eval("Pregunta")%> para mostrar la pregunta, y uso un cuadro de texto y <%#Enlazar("Respuesta")%> para aceptar una respuesta.

Si mi ObjectDataSource devuelve tres objetos Pregunta, entonces mi Repetidor muestra las tres preguntas con un cuadro de texto después de cada pregunta para que el usuario proporcione una respuesta.

Hasta ahora funciona muy bien.

Ahora quiero tomar la respuesta del usuario y volver a colocarla en las clases de preguntas relevantes, que luego persistiré.

¿Seguramente el marco debería encargarse de todo esto por mí?Utilicé el método Bind, especifiqué un DataSourceID, especifiqué un método Update en mi clase ObjectDataSource, pero parece que no hay manera de poner en marcha todo.

Intenté agregar un botón Comando y en el código detrás de llamar a MyDataSource.Update(), pero intenta llamar a mi método de Actualización sin parámetros, en lugar del parámetro Pregunta que espera.

Seguramente hay una manera fácil de lograr todo esto con poco o ningún código subyacente.

Parece que están todas las piezas, pero falta algo de pegamento para pegarlas todas.

¡Ayuda!

Antonio

¿Fue útil?

Solución

Tienes que manejar el evento de devolución (clic en el botón o lo que sea) y luego enumerar los elementos repetidores de esta manera:

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
}

Otros consejos

El método de vinculación realmente no es para el repetidor, es más para la vista de formulario o la vista de cuadrícula, donde está editando solo un elemento de la lista, no todos los elementos de la lista.

En ambos, hace clic en un botón de edición que luego le brinda los controles vinculados (enlazados mediante vinculación) y luego presiona el enlace de guardar que guarda automáticamente el elemento nuevamente en su fuente de datos sin ningún código detrás.

Entonces, ¿qué sentido tiene el método Bind (a diferencia del método Eval) si tengo que vincular todo manualmente en la devolución de datos?

Ben:Después de haberlo probado, item.DataItem siempre es nulo y, según la siguiente publicación, no está diseñado para usarse de esa manera:

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

Entonces, ¿cómo puedo vincularlo manualmente?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top