0

Ok I simply don't know how I am going to do this here is what I need:
I have exercises in my db (question id,question text field,close/open(bool) field,right answer field and 3 wrong answer fields which are null unless it is a closed question)
What I want to do is to load all the exercises from my database to my form I dunno how many I have and it will change so I need it to b dynamic.

How do I load them to my form so I can refer to them later on?

What I need when I load them to my form is to place the text in a label and then a textbox for an answer (open questions) or 4 possible answers (1 right and 3 wrong) in radio buttons (closed question).
Ofcourse randomized order.

My problem is that if I write a code that loads them by page_load (using html tags)
I won't b able to write a function that will relay to them.
Since if the program loads them on page_load it means they do not exist before it.

I could load the question id from the db to their id/name for using it later when I request the the answers from the client.

Can I do something like declaring an object of the kind of a textbox (not to reinvent but use the existing asp.net object) so when I place it I will b able to refer to it?
Again placing is on page_load.

4
Contributors
5
Replies
6
Views
5 Years
Discussion Span
Last Post by bharat_4g
0

Hi UtaChan, I completely dont understand your requirement but if you want you can dynamically create any asp.net control using code behind, because every asp.net control is a class and you can create an object and use them directly(like TextBox txt1=new TextBox();).

0

Yea this is what I need but waht if I need more of this kind like 1 for each item in my list will it b ok if all have the same name? like

foreach(     )
TextBox textbox =new TextBox()
form.controlx.add(textbox)

Is it ok as long as they have different id? since it;s gonna b inside a loop...
(please dun correct my syntax here I scribled something just for example didn;t really try to make it legid)

0

You can use listview. You can put other controls inside a listview like textboxes and labels.
Just assign a datasource to the listview and display database values in a label or any other control depending on your preference.

0

In you aspx site make a label and Name it.
For example:

<asp:Label ID="lbl_question" runat="server" Text=""></asp:Label> 
<asp:Label ID="lbl_option1" runat="server" Text=""></asp:Label> 
<asp:Label ID="lbl_option2" runat="server" Text=""></asp:Label> 

Add other stuffs like answers, etc.

Now in you code behind file enter:

protected void lbl_items_SelectedIndexChanged(object sender, EventArgs e)
       {            
            SqlConnection SqlConn = new SqlConnection();
            SqlCommand cmd;
            SqlDataReader dr;

            SqlConn.ConnectionString = ConfigurationManager.AppSettings["SqlConn"].ToString();
            SqlConn.Open();
            cmd = new SqlCommand("SELECT [Questionno],[Question],[Option1],[Option2],[Option3] FROM [tbl_exam] '" + lbl_items.SelectedItem.Value.ToString() + "'", SqlConn);
            dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    lbl_questionno.Text = dr["Questionno"].ToString();
                    lbl_question.Text = dr["Question"].ToString();
                    lbl_option1.Text = dr["Option1"].ToString();
                    ...
                    ...
                }
            }

Above code is to read data from the database i have changed little bit to give you some idea.

Help for my problem if you can Link

Edited by jateshs1007

0
Example for creating controls dynamically and accessing them from server side

Code in aspx file:
<form id="form1" runat="server">
    <div>
        <asp:Panel ID="pnldyncontrols" runat="server">
        </asp:Panel>
        <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">Get controls</asp:LinkButton>
    </div>
    </form>

    Code in aspx.cs file


     protected void Page_Load(object sender, EventArgs e)
        {
            //for adding controls dynamically on the page
            for(int i=0;i<30;i++)
            {
                TextBox tb = new TextBox();
                tb.ID = "txtbox"+i;
                tb.Text = "Text box"+i;
                RadioButton rb = new RadioButton();
                rb.ID = "Radio Button"+i;
                Label l1 = new Label();
                l1.ID = "label"+i;
                l1.Text = "Label "+i;
                pnldyncontrols.Controls.Add(tb);
                pnldyncontrols.Controls.Add(rb);
                pnldyncontrols.Controls.Add(l1);
                pnldyncontrols.Controls.Add(new LiteralControl("<br></30>"));
            }


        }
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            //To access the controls in a page
            foreach (Control ctrl in pnldyncontrols.Controls)
            {
                if (ctrl is TextBox)
                {
                    TextBox tb = ctrl as TextBox;
                    Response.Write(tb.Text);
                    Response.Write("<br/>");
                }
            }
        }



    Replace for loop with the dataset or datareader loop
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.