Generate Dropdownlists dynamically and bind data from datatable or dataadapter methods

Hi,
     I'm  not much experienced with asp.net development.  I have a database for a kind of quiz application, answers to which are then processed through logic to generate or determine a plan for the user.

I have two tables in the database 1)Questions  table with Qid(P key), Q description etc.

2)QuestionAns table which contains all the answer options for every question in the question table.   Columns are QueAnsId(P. Key),Qid(foreign key), Answers(all answers options for every question).

I created two datasets for each of these tables using the configuration wizards. 1)QuesDS,
2)AnsDS

On their respective tableAdapters, i have written methods GetQuestions(), GetAnswersByQuesId(Qid)containg respective sql queries.

What i want to achieve is,  for each question  displayed , a dropdownlist with all the answer options for that question be displayed. Then a question again and A dropdownlist again and so on.  The answer dropdownlists should be  generated dynamically based on number of questions  in the question table. I can get the questions to print but not the answers list.

My questions are:

1)Is a Dataset solution appropriate for this or should i be using a datareader?
2)Am i on the right track  or is this the appropriate way of what i am trying to achieve?
3)Get the dropdownlists to work.


Code for this follows below:

using.........default namespaces.......
using QuesDSTableAdapters;
using AnsDSTableAdapters;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


        QuesDSTableAdapters.QuestionTableAdapter questionsAdapter = new
 QuesDSTableAdapters.QuestionTableAdapter();

        QuesDS.QuestionDataTable questions;

        questions = questionsAdapter.GetQuestions();



        AnsDSTableAdapters.QueAnsTableAdapter queansAdapter = new
 AnsDSTableAdapters.QueAnsTableAdapter();

 AnsDS.QueAnsDataTable answer;

               // AnsDS.QueAnsDataTable queans;


foreach (QuesDS.QuestionRow quesRow in questions)
        {


            Response.Write("Question: " + quesRow.Que + "<br />");

            answer = queansAdapter.GetAnswersByQuestionId(quesRow.QID);

            DropDownList ddl = new DropDownList() ;

            // ddl.DataSource = queansAdapter.GetAnswersByQuestionId(Convert.ToInt32(quesRow.QID));

           
ddl.DataSource = answer;

           // DropDownList1.Items.Add(Convert.ToString(answer.Columns ["Answer"]));

ddl.DataTextField  = "Answer";

            ddl.DataBind();
           


        }

    }

ee-itproAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

urir10Commented:
Are you getting anything for the answer DDL?
0
ee-itproAuthor Commented:
Didn't understand that.
0
urir10Commented:
Are you getting anything to show in the Drop Down List for the answers or does it just remain blank?
0
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

ee-itproAuthor Commented:
Remains blank and shows after the two questions that i have currently in  question table.  It should show like ques and then ans nad then ques again and ans again.
0
urir10Commented:
You mean the control itself shows after the two questions are printed? if so you need to add the control to the from within the foreach loop
0
ee-itproAuthor Commented:
Yes after the two questions are printed.  
0
urir10Commented:
Where is the line where you adding the control to the page?
0
ee-itproAuthor Commented:
i just have it in design view.... how do we add it the code?
0
ee-itproAuthor Commented:
i added it just now like this :

DropDownList ddl=new DropDownlist();

form.controls.add(ddl);


Now it shows the lists but there are 3 instead of 2 for 2 questions and they all show in a horizontal line and after the printed questions.
0
urir10Commented:
you can add this between each control and each question to break the line:

form.controls.Add(new LiteralControl("<br/>"));

As to it adding it 3 times it must be something in the loop that makes it run 3 times instead ok.
0
ee-itproAuthor Commented:
the dropdownlists still appear after the questions
0
urir10Commented:
can you post your complete code again pls
0
ee-itproAuthor Commented:
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


        QuesDSTableAdapters.QuestionTableAdapter questionsAdapter = new
 QuesDSTableAdapters.QuestionTableAdapter();
        QuesDS.QuestionDataTable questions;

        questions = questionsAdapter.GetQuestions();



        AnsDSTableAdapters.QueAnsTableAdapter queansAdapter = new
 AnsDSTableAdapters.QueAnsTableAdapter();

        AnsDS.QueAnsDataTable answer;

       

       // AnsDS.QueAnsDataTable queans;

       




        foreach (QuesDS.QuestionRow quesRow in questions)
        {


            Response.Write("Question: " + quesRow.Que + "<br />");



           answer = queansAdapter.GetAnswersByQuestionId(quesRow.QID);

           Form.Controls.Add(new LiteralControl("<br/>"));

            DropDownList ddl = new DropDownList();


           


            Form.Controls.Add(ddl);

            // ddl.DataSource = queansAdapter.GetAnswersByQuestionId(Convert.ToInt32(quesRow.QID));

            ddl.DataSource = answer;

           // DropDownList1.Items.Add(Convert.ToString(answer.Columns ["Answer"]));
            ddl.DataTextField  = "Answer";
            ddl.DataBind();

           
           
        }

    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}
0
urir10Commented:
i still dont see where are you adding the control to the page?
0
ee-itproAuthor Commented:
after i create the dropdownlist object, then i write

form.control.add(ddl),


where ddl is the dropdownlisty object i created .
0
urir10Commented:
right sorry. hmm how about if you try inserting the question using

 Form.Controls.Add(new LiteralControl("Question here"));

Instead Response.Write
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
ee-itproAuthor Commented:
i added form.control.aa(new literal control........)  in between  ques and ans and also twice before the end of foreach loop. So now it displays better.  But there's still a empty drop downlist that appears  just before the first question.


 foreach (PLabDS.QuestionRow quesRow in questions)
        {


            //Response.Write("Question: " + quesRow.Que + "<br />");



           //answer = queansAdapter.GetAnswersByQuestionId(quesRow.QID);

           Form.Controls.Add(new LiteralControl(quesRow.Que));

           answer = queansAdapter.GetAnswersByQuestionId(quesRow.QID);

            DropDownList ddl = new DropDownList();


            Form.Controls.Add(new LiteralControl("<br>"));


            Form.Controls.Add(ddl);

            // ddl.DataSource = queansAdapter.GetAnswersByQuestionId(Convert.ToInt32(quesRow.QID));

            ddl.DataSource = answer;

           // DropDownList1.Items.Add(Convert.ToString(answer.Columns ["Answer"]));
            ddl.DataTextField  = "Answer";
            ddl.DataBind();

            Form.Controls.Add(new LiteralControl("<br>"));

            Form.Controls.Add(new LiteralControl("<br>"));
           
        }
0
ee-itproAuthor Commented:
deleted the list control from design view . it's working fine now...


i'll accept the solution.



can you just tell me if i am using the right approach (datasets  instead of datareader for this particular scenario)?
0
ee-itproAuthor Commented:
deleted the list control from design view . it's working fine now...


i'll accept the solution.



can you just tell me if i am using the right approach (datasets  instead of datareader for this particular scenario)?
0
urir10Commented:
Yes a dataset or a datatables are just fine.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.