I am using PlaceHolders in a Repeater to generate a multi choice
survey. I need a way of testing to see what the placeholder has been
turned into at runtime, and reading out the data.
The admin can add questions to a survey, then add possible answers to
each question. Certain functions are also set, for example multi
answer (display with a checkboxlist) single answer (radiolist). Also
toggle the presence of an "other" selection which produces a textbox
to type into.
The questions and answers are held in a SQL Server Database.
The survey output page reads the questions from the database, and
builds the survey using a repeater.
when a "respondent " arrives to fill out the survey they click the
answers they wish, fill in the boxes and press submit.
My problem is how do i then read out the checked answers?
This link may work, may not :)
I will leave it so everyone is admin over the weekend. if you break it
i would be interested to know what you did :)
Brief instructions, click add question to add a new Q. You MUST put an
Integer in the Question number field. it does not auto number and a
null will break it.
Once a new Q is added click edit (pencil icon) and add Answers. (you
can arrange the order of A with the up and down arrow. Note how the
selected A *remains* selected!)
http://bagheera.ncl.ac.uk/dps/Deskto...ex=17&tabid=97
I am not sure what code will help make my query understandable!
Here is the template column for the repeater
<itemTemplate >
<table border="0">
<tr>
<td> <asp:HyperLin k id= "editLink" ImageUrl="~/images/edit.gif"
NavigateUrl='<% # "~/DesktopModules/awsurvey/Question_Edit.a spx?ItemID="
& DataBinder.Eval (Container.Data Item, "ItemID") & "&mid=" & ModuleId
%>' Visible= "<%# IsEditable %>" runat= "server" />
<span class="normal"> Q<%#
Container.datai tem("questionNo ") %></span></td>
<td><span class="normal" style="font-size:1.1em;"><% #
Container.datai tem("question") %> </span></td>
</tr>
<tr>
<td rowspan="2">&nb sp;</td>
<td><span class="normal" style="font-size:0.7em; color:blue;"> <%#
Container.datai tem("Instructio n") %> </span></td>
</tr>
<tr>
<td><asp:PlaceH older id="ph1" runat="server"/>
<br>
<asp:panel id="otherPanel " runat=server visible="false" >
<asp:label runat="server" id="other" /> Other (please
specify)<asp:te xtbox id="otherTb" runat="server"/>
</asp:panel>
</td>
</tr>
</table>
</itemTemplate>
Here is the OnDataBound sub "type" is either "radio" or "checkbox".
"other" is boolean.
sub QuestionListDat aBound(Sender As Object, e As
RepeaterItemEve ntArgs)
If (e.Item.ItemTyp e = ListItemType.It em) Or _
(e.Item.ItemTyp e = ListItemType.Al ternatingItem) Then
select Case DataBinder.Eval (e.Item.DataIte m, "type")
case "radio" :
dim lab as new radiobuttonlist
lab.datasource = Questions.GetAn swersbyQuestion (
DataBinder.Eval (e.Item.DataIte m, "itemID"))
lab.datatextfie ld="Answer"
lab.DataValueFi eld="itemId"
lab.databind
CType(e.Item.Fi ndControl("ph1" ),
PlaceHolder).co ntrols.add(lab)
case "checkbox" :
dim lab as new checkboxlist
lab.datasource = Questions.GetAn swersbyQuestion (
DataBinder.Eval (e.Item.DataIte m, "itemID"))
lab.datatextfie ld="Answer"
lab.DataValueFi eld="itemId"
lab.databind
CType(e.Item.Fi ndControl("ph1" ),
PlaceHolder).co ntrols.add(lab)
end select
if DataBinder.Eval (e.Item.DataIte m, "other")
CType(e.Item.Fi ndControl("othe rPanel"), panel).visible= true
end if
end if
end sub
Here is my submitClick (you can fill it in for me :)
sub submit_click(se nder As Object, e As System.EventArg s)
' get list of stuff in repeater
' go through each in list
' read out checked item(or items)
' read out "other" string
' enter all into DB
end sub
I bind to the repeater at page load
QuestionList.Da taSource =Questions.GetQ uestions(Module Id)
QuestionList.Da taBind()
Thing I really want answered :-
How do I read out what boxes where checked when a user hits the
button.
Thanks for any ideas.
Fragg