none
Ajuda com CheckBoxList RRS feed

  • Pergunta

  • Olá Gente boa tarde conto com ajuda de todos vocês para resolver o seguinte problema

    Tenho uma pagina de edição das questoes da prova onde contem a pergunta, disciplina,assunto e nivel de dificuldade esses estão na tabela chamada -> questao, e tenho os itens dessa questao que fica na tabela alternativa onde realizo uma query com o resultado da id_questao

    a tabela Alternativa tem um link com as questoes pelo id_questao, consigo realizar a consulta e jogar na CheckBoxList, so que não consigo marcar a questão correta. a minha tabela Alternativa tem a seguinte estrutura ID | ID_QUESTAO | RESPOSTA | CORRETA. cujo a correta quando esta como valor 1 me retorne o CheckBoxList Marcado quando for vazio me retorne Não Marcado, estou iniciando em aspx desculpa qualquer coisa. Obrigado a todos que colaborarem.

    Vou especificar como está

    tenho uma store procedure no meu banco:

    ALTER PROCEDURE [victor].[SelectAlternativaByIdQuestao]
    @id_questao int
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
    
      -- Insert statements for procedure here
    	SELECT * from [dbo].[alternativa] where id_questao = @id_questao
    	
    END

    Aqui está meu datasource junto com meu checkboxlist

    </p>
      <h3>Adicione ou Remova Item da Prova</h3>
      <p>
        <asp:CheckBoxList ID="CblAlternativas" runat="server" 
          DataSourceID="sqlDataSource" DataTextField="resposta" DataValueField="id">
          <asp:ListItem></asp:ListItem>
        </asp:CheckBoxList>
        <asp:SqlDataSource ID="sqlDataSource" runat="server" 
          ConnectionString="<%$ ConnectionStrings:ProvaString %>" 
          SelectCommand="SelectAlternativaByIdQuestao" 
          SelectCommandType="StoredProcedure">
          <SelectParameters>
            <asp:Parameter DefaultValue="6" Name="id_questao" Type="Int32" />
          </SelectParameters>
        </asp:SqlDataSource>
      </p>

    Coloquei o id value para 6 para me retornar os seguintes campos

    id     id_questao resposta            correta
    ----------- ----------- ------------------------------ -----------
    33     6      medula              NULL
    34     6      diáfise               NULL
    35     6      periósteo             NULL
    36     6      epífise               1
    onde o 1 é a resposta correta ... quando abro minha página ele me retorna esses campos so que não me retorna a epifise selecionado. :(

     

    terça-feira, 30 de novembro de 2010 16:44

Respostas

  • OLÁ GENTE BOA TARDE CONSEGUI RESOLVER ASSIM E AINDA COLOQUEI UM LABEL PARA DIZER SE A PERGUNTA É CORRETA OU NÃO. EX:

       protected void Page_Load(object sender, EventArgs e)
        {
          carregarItem();
        }
    
    
        protected void carregarItem()
        {
          string _connectionString = WebConfigurationManager.ConnectionStrings["ProvaString"].ConnectionString;
          SqlConnection con = new SqlConnection(_connectionString);
          SqlCommand cmd = new SqlCommand("Select * from alternativa where id_questao = '7'", con);
          cmd.CommandType = CommandType.Text;
          con.Open();
          SqlDataReader reader = cmd.ExecuteReader();
          while (reader.Read())
          {
            Label novo = new Label();
            ListItem item = new ListItem(reader["resposta"].ToString());
            if (reader["correta"].ToString() == "1")
            {
              item.Selected = true;
              novo.Text = "<-- Correta<br>";
              
            }
            else
            {
              novo.Text = "cxvbxcvbxcv<br>";  
            }
            lblCorreta.Controls.Add(novo);
            rbItem.Items.Add(item);
            
          }
        }
        

    • Marcado como Resposta Victor Dekolá terça-feira, 30 de novembro de 2010 20:26
    terça-feira, 30 de novembro de 2010 20:19

Todas as Respostas

  • para pegar o valor é checkboxlist.selecteditem.value, sendo que no caso do chekcboxlist vc tem que colocar um item como selected = true e será esse valor que será passado caso não se escolha outra opção, se vc quiser forçar o usuário a escolher seria melhor colocar um dropdonwlist e seta o valor 0 dela para ---escolha uma opção-- ai vc testa se o valor for 0 vc envia uma mensagem para o usuario escolher uma opção.

     

     


    Junior
    terça-feira, 30 de novembro de 2010 17:07
  • adicionei mais algumas explicações para você entender melhor como o meu checkbox esta trabalhando.
    terça-feira, 30 de novembro de 2010 18:37
  • Victor checkbox dropdownlist tem dois atributos o value e o text o value é o índice e o text a descrição no seu exemplo o id_questao é 6 para todos , entendeu ?


    Junior
    terça-feira, 30 de novembro de 2010 18:42
  • Esse id questao e o campo que eu usei para me selecionar no banco as perguntas que fazem parte da questão 6 ai ele me retornou;

    id   id_questao resposta      correta
    ----------- ----------- ------------------------------ -----------
    33   6   medula       NULL
    34   6   diáfise        NULL
    35   6   periósteo       NULL
    36   6   epífise        1



    So que no CheckBoxList me retornou Medula, diafise, periosteo, epifise, so que não me retornou nenhum marcado.
    terça-feira, 30 de novembro de 2010 18:51
  • OLÁ GENTE BOA TARDE CONSEGUI RESOLVER ASSIM E AINDA COLOQUEI UM LABEL PARA DIZER SE A PERGUNTA É CORRETA OU NÃO. EX:

       protected void Page_Load(object sender, EventArgs e)
        {
          carregarItem();
        }
    
    
        protected void carregarItem()
        {
          string _connectionString = WebConfigurationManager.ConnectionStrings["ProvaString"].ConnectionString;
          SqlConnection con = new SqlConnection(_connectionString);
          SqlCommand cmd = new SqlCommand("Select * from alternativa where id_questao = '7'", con);
          cmd.CommandType = CommandType.Text;
          con.Open();
          SqlDataReader reader = cmd.ExecuteReader();
          while (reader.Read())
          {
            Label novo = new Label();
            ListItem item = new ListItem(reader["resposta"].ToString());
            if (reader["correta"].ToString() == "1")
            {
              item.Selected = true;
              novo.Text = "<-- Correta<br>";
              
            }
            else
            {
              novo.Text = "cxvbxcvbxcv<br>";  
            }
            lblCorreta.Controls.Add(novo);
            rbItem.Items.Add(item);
            
          }
        }
        

    • Marcado como Resposta Victor Dekolá terça-feira, 30 de novembro de 2010 20:26
    terça-feira, 30 de novembro de 2010 20:19