Getting data *from* a repeater (or maybe datalist?)

Discussion in 'ASP .Net' started by Fraggle, Nov 7, 2003.

  1. Fraggle

    Fraggle Guest

    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/DesktopDefault.aspx?tabindex=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:HyperLink id= "editLink" ImageUrl="~/images/edit.gif"
    NavigateUrl='<%# "~/DesktopModules/awsurvey/Question_Edit.aspx?ItemID="
    & DataBinder.Eval(Container.DataItem, "ItemID") & "&mid=" & ModuleId
    %>' Visible= "<%# IsEditable %>" runat= "server" />
    <span class="normal">Q<%#
    Container.dataitem("questionNo") %></span></td>
    <td><span class="normal" style="font-size:1.1em;"><%#
    Container.dataitem("question") %> </span></td>
    </tr>
    <tr>
    <td rowspan="2">&nbsp;</td>
    <td><span class="normal" style="font-size:0.7em; color:blue;"> <%#
    Container.dataitem("Instruction") %> </span></td>
    </tr>
    <tr>
    <td><asp:placeHolder id="ph1" runat="server"/>
    <br>
    <asp:panel id="otherPanel" runat=server visible="false">
    <asp:label runat="server" id="other" /> Other (please
    specify)<asp:textbox 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 QuestionListDataBound(Sender As Object, e As
    RepeaterItemEventArgs)


    If (e.Item.ItemType = ListItemType.Item) Or _
    (e.Item.ItemType = ListItemType.AlternatingItem) Then

    select Case DataBinder.Eval(e.Item.DataItem, "type")

    case "radio" :

    dim lab as new radiobuttonlist
    lab.datasource = Questions.GetAnswersbyQuestion(
    DataBinder.Eval(e.Item.DataItem, "itemID"))
    lab.datatextfield="Answer"
    lab.DataValueField="itemId"

    lab.databind
    CType(e.Item.FindControl("ph1"),
    PlaceHolder).controls.add(lab)

    case "checkbox" :

    dim lab as new checkboxlist
    lab.datasource = Questions.GetAnswersbyQuestion(
    DataBinder.Eval(e.Item.DataItem, "itemID"))
    lab.datatextfield="Answer"
    lab.DataValueField="itemId"
    lab.databind
    CType(e.Item.FindControl("ph1"),
    PlaceHolder).controls.add(lab)

    end select



    if DataBinder.Eval(e.Item.DataItem, "other")

    CType(e.Item.FindControl("otherPanel"), panel).visible=true

    end if

    end if
    end sub


    Here is my submitClick (you can fill it in for me :)

    sub submit_click(sender As Object, e As System.EventArgs)

    ' 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.DataSource =Questions.GetQuestions(ModuleId)
    QuestionList.DataBind()


    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
    Fraggle, Nov 7, 2003
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. [ MVP ] Sukesh Ashok Kumar
    Replies:
    0
    Views:
    1,630
    [ MVP ] Sukesh Ashok Kumar
    Jul 12, 2003
  2. Nevyn Twyll
    Replies:
    8
    Views:
    1,867
  3. .Net Sports

    DataList, Repeater, or Data Grid?

    .Net Sports, Feb 23, 2005, in forum: ASP .Net
    Replies:
    1
    Views:
    572
    IPGrunt
    Feb 24, 2005
  4. Guest
    Replies:
    5
    Views:
    615
  5. Ville Vainio
    Replies:
    11
    Views:
    606
    Hamish Lawson
    Aug 10, 2004
Loading...

Share This Page