Foros del Web » Programando para Internet » ASPX (.net) »

construir preguntas en webform

Estas en el tema de construir preguntas en webform en el foro de ASPX (.net) en Foros del Web. Hola, he buscado en el foro pero no encuentro un ejemplo y agradecere si me pueden ayudar. Estoy intentando crear un formulario donde los administradores ...
  #1 (permalink)  
Antiguo 17/08/2009, 20:11
 
Fecha de Ingreso: diciembre-2002
Ubicación: USA
Mensajes: 101
Antigüedad: 21 años, 4 meses
Puntos: 0
construir preguntas en webform

Hola, he buscado en el foro pero no encuentro un ejemplo y agradecere si me pueden ayudar. Estoy intentando crear un formulario donde los administradores puedan crear preguntas y decidir si la respuesta del usuario sera Yes o No O si sera una caja de texto donde ellos puedan escribir su contestacion.

La relacion en la base de datos esta hecha y es algo parecido a

PreguntaID Pregunta YesNo


RespuestaID PreguntaID Respuesta PersonaID


El Valor de Respuesta puede ser Yes o No dependiendo de la seleccion del administrador o si este decidio que el usuario podria contestar en una caja de texto, entonces el usuario vera una caja de texto, sino pues un radio button o un combo box con Yes y No.

No tengo problema en crear las preguntas en el formulario y mostrarla al usuario, pero la parte de decidir si contestara en textbox o con el combobox se me esta enredandooooo...tendrian algun ejemplo que pudieran mostrarme?

muy agradecido siempre,

blue

PS estoy usando C# en VS 2008 3.5y mi agencia NO permite AJAX. Lo mas parecido que he encontrado ha sido este link http://msdn.microsoft.com/en-us/library/aa479330.aspx pero aun no lo logro.
  #2 (permalink)  
Antiguo 18/08/2009, 07:06
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: construir preguntas en webform

Hola, no te entendí mucho... pero por lo que entendí, espero te sirva algo como esto.

Hecho en C#.


Code Source de la página:

Código HTML:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="Presentacion.Paginas.WebForm2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <style type="text/css">
        #Pregunta
        {
            height: 35px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        Introducir Pregunta :
        <asp:TextBox ID="TextBox1" runat="server" Height="26px" Width="150px"></asp:TextBox>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forma Respuesta:
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
&nbsp;&nbsp;
        <asp:Button ID="Button1" runat="server" Text="Aceptar" 
            onclick="Button1_Click" />
        <br />
        <br />
    
    </div>
    
    
    <div id="Usuarios" style="background-color:Aqua">
    <div id="Pregunta">
        <asp:Label ID="lblPregunta" runat="server" Text="Aqui irá la pregunta"></asp:Label>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" 
            Text="Responder" />
        </div>
    <div id="panel1" style="position:relative; top: 42px; left: 104px; width: 348px;">
        <asp:Panel ID="Panel3" runat="server" BackColor="Aqua" Height="57px" Width="364px" 
            Visible="False">
            <asp:RadioButtonList ID="RadioButtonList1" runat="server" Height="21px" 
                RepeatDirection="Horizontal" Width="82px">
                <asp:ListItem>Yes</asp:ListItem>
                <asp:ListItem>No</asp:ListItem>
            </asp:RadioButtonList>
        </asp:Panel>
    </div>
    <div id="panel2" 
        
            style="height: 57px; width: 364px; position:relative; top: -32px; left: 106px;">&nbsp;
        <asp:Panel 
            ID="Panel4" runat="server" BackColor="Aqua" Width="372px" Height="43px" 
            Visible="False">
        Respuesta :
        <asp:TextBox ID="TextBox2" runat="server" Width="278px"></asp:TextBox>
        </asp:Panel>
    </div>
    
    </div>
    </form>
</body>
</html> 

Code behind de la página:

Código C#:
Ver original
  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.HtmlControls;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.WebControls.WebParts;
  11.  
  12. namespace Presentacion.Paginas
  13. {
  14.     public partial class WebForm2 : System.Web.UI.Page
  15.     {
  16.         protected void Page_Load(object sender, EventArgs e)
  17.         {
  18.             obtienepreguntas();
  19.         }
  20.  
  21.         public void preguntas()
  22.         {
  23.  
  24.         }
  25.         //parte Administrador
  26.         protected void Button1_Click(object sender, EventArgs e)
  27.         {
  28.             //envia la pregunta y la forma de respuesta a la base de datos
  29.         }
  30.         //fin parte administrador
  31.  
  32.  
  33.         //parte usuarios
  34.         private void obtienepreguntas()
  35.         {
  36.             //esta parte debería obtener las preguntas desde la base de datos
  37.             //la llena en la lblPreguinta
  38.  
  39.             //si es que la pregunta se definio como "yesNo"
  40.             Panel4.Visible = false;
  41.             Panel3.Visible = true;
  42.             //si la pregunta se definio como "respuesta de texto
  43.             Panel3.Visible = false;
  44.             Panel4.Visible = true;
  45.         }
  46.  
  47.         protected void Button2_Click(object sender, EventArgs e)
  48.         {
  49.             /*esto envia la respuesta a la base de datos
  50.              * si es que el panel 3 esta visible, envia yes o no segun la opcion elegida
  51.              * si el panel 4 esta visible envia la respuesta ingresada
  52.              */
  53.  
  54.         }
  55.         //fin parte usuarios
  56.     }
  57. }

La parte de usuario tiene dos paneles, uno con dos radio buttons "Yes, No" y el otro panel con un textbox para introducir respuesta.

La idea es que si el administrador define la pregunta como Yes, No, debes hacer un método que retorne la definicion de la pregunta o de la respuesta...
Entonces si ese metodo retorna yesno, el panel con los radio buttons se muestra y oculta el otro. Si ese metodo retorna "respuesta" o algo asi, el panel con los radio buttons se esconde y se muestra el pnael con el textbox para que el usuario ingrese su respuesta.

Despues al responder, si ews que el panel con radiobuttons esta visible, se envia la respuesta Yes, No a la BD... si el panel con el textbox esta visible, se envia la respuesta ingresada en el textbox.

Prueba el código y ve si es lo que necesitas.

Saludos!
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #3 (permalink)  
Antiguo 18/08/2009, 20:55
 
Fecha de Ingreso: diciembre-2002
Ubicación: USA
Mensajes: 101
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: construir preguntas en webform

la logica es buena...
tratare de crear el codigo a ver como resulta, gracias
  #4 (permalink)  
Antiguo 19/08/2009, 20:14
 
Fecha de Ingreso: diciembre-2002
Ubicación: USA
Mensajes: 101
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: construir preguntas en webform

aun tengo problema con resolver esto...
porque estoy colocando la lista de preguntas en un GridView y las respuestas
Quiero que al usuario le aparezca una caja de texto si en la definicion de TipoPregunta fue Texto y una combo list si era TipoPregunta YesNo.

Intente colocando el panel pero por alguna razon me sigue enseniando ambos (caja de texto y el combo box con Yes/No.

Intente GridView.RowSelected.Cells[2].Text asignandolo a una variable y asi mostrar o no el panel ahi, pero siempre me muestra el panel con el combo box!
ayudaaaaaaaa porfa..quizas no estoy llamando correctamente el Panel que coloque en el GridView1 o la fila y celda que estoy editando?...o quizas debo colocarlo en otro lugar...intente en databaound del GridView y en RowEditing etc etc....

me podrian ayudar con algun ejemplo que obtenga un valor de una celda en GridView y si ese valor es "abc" para esa fila, entonces el panel en esa fila esta visible?

gracias!
blue
  #5 (permalink)  
Antiguo 21/08/2009, 06:26
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: construir preguntas en webform

Revisaste el codigo que te di?.....

Intenta esto...

1.- Poner boton tipo "select" a cada fila de la grid de preguntas...
2.- Tus paneles deben tener por defecto la visibilidad falsa (Visible="false")
3.- Al seleccionar una fila de tu grid... si es que la opcion de respuesta está en la primera columna de tu grid haces esto.

Código C#:
Ver original
  1. protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
  2. {
  3.            
  4.     string tipo = GridView1.Rows[GridView1.SelectedIndex].Cells[0].Text.ToString();
  5.     if(tipo=="Yes/NO") //o segun como tengas definidas las respuestas si no
  6.     {
  7.        panelRespuestaTextBox.Visible=false;
  8.        panelYesNo.Visible=true;
  9.      }
  10.  
  11.      if(tipo=="Respuesta")// o segun como definas las respuestas en las que aparece el textbox
  12.      {
  13.        panelRespuestasTextBox.Visible=true;
  14.        panelYesNo.Visible=false;
  15.       }
  16. }

4.- Recuerda que los paneles deben estar dentro de una div con posicion relativa, para que los puedas ubicar donde quieras, si es que los quieres mover.
Código HTML:
<div id="divPanel1" style="position:relative">
<asp:Panel ...... ></asp:Panel>

</div> 
Prueba estas opciones y me cuentas como te fue...

Saludos!

PD: Si no te resulta, pon tu código y veré como ayudarte.
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #6 (permalink)  
Antiguo 22/08/2009, 12:51
 
Fecha de Ingreso: diciembre-2002
Ubicación: USA
Mensajes: 101
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: construir preguntas en webform

gracias mil, pero me funciona si uso el Label que esta dentro del Gridview y si los paneles estan fuera del gridview con
Label lblcual = (Label) GridView1.Rows[GridView1.SelectedIndex].Cells[3].FindControl("lblQuestionType");

Hay algun metodo que sea para cuando ellos hacen click en el boton de Edit?
Intente igual con RowEditing en vez de usar SelectedIndexChanged y no lo consigo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:19.