Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP.NET 3.x > Språk - C#

Hämta Radiobuttons värde i en itemtemplate

Tjenare!

Sitter och loopar ut fyra stycken radiobuttons i en repeater, och vill lägga in värdet dessa genererar i en databas.

Själv databaskopplingen etc är redan färdigt, det jag vill veta är hur man hämtar värdet från radiobuttons, det är något lurigt med det.

min kod:


    <asp:Repeater runat="server" ID="postQuestions" >
        <HeaderTemplate>

           ...Fyra olika påståenden....

        </HeaderTemplate>

<ItemTemplate>
     
            <%#DataBinder.Eval(Container.DataItem, "fraga") %>
       
            <asp:RadioButton Value="3" Text="" class="radioPadding" GroupName="radioList" runat="server" />
            <asp:RadioButton value="1" Text="" class="radioPadding" GroupName="radioList" runat="server" />
            <asp:RadioButton value="2" Text="" class="radioPadding" GroupName="radioList" runat="server" />
            <asp:RadioButton value="4" Text="" class="radioPadding" GroupName="radioList" runat="server" />

        </ItemTemplate>

Hur hämtar jag värdet från dom? Ska jag använda RadioButtonList istället? Jag har letat och letat och letat efter lösningar, hittar inget som hjälper mig. Tack för hjälpen på förhand :)

Alla har sina brister.
ID: #20948 | Skapades: 2011-04-26 16:41:07 | Tråden har 18 svar och har lästs 675 gånger.
Sida: 1 2

Shadi
Shadi

Gradering

#20950

Är det i en postback du vill hämta värdena eller skickas du vidare till en annan sida för bearbetning av data när du trycker på submit?

Administratör på AspKoll.se!
ID: #20950 | Skapades: 2011-04-26 16:58:55

Det är en knapp som hämtar fler frågor från en databas i detta fallet, det blir en "nästa sida"-grej av det.

Det jag vill göra är att spara datan användaren matat in innan jag hämtar fler frågor (tre frågor per sida visas), så man är alltid på samma sida.

Alla har sina brister.
ID: #20951 | Skapades: 2011-04-26 17:00:53

Shadi
Shadi

Gradering

#20952

Kollar jag runt så verkar de flesta använda en radiobuttonlist, jag själv kodar inte .NET så mycket, så jag vet inte riktigt vilket alternativ som är bäst, men med en sådan kod:

<asp:radiobuttonlist id="radio1" runat="server">
        <asp:listitem id="option1" runat="server" value="Madrid" />
        <asp:listitem id="option2" runat="server" value="Oslo" />
        <asp:listitem id="option3" runat="server" value="Lisbon" />
      </asp:radiobuttonlist>

Verkar det finnas en sådan lösning (källa):

if Page.IsPostBack then
    Message.Text = "Du valt följande alternativ: " + radio1.SelectedItem.Value
   end if

Sen verkar denna länk innehålla lite information om det du arbetar med också, källa.

Administratör på AspKoll.se!
Redigerades av Shadi den 26 april 2011. Läs tidigare inlägg.
ID: #20952 | Skapades: 2011-04-26 17:06:25

Jag kollar på detta, sätter mig direkt :)

Edit: Skrev om det till följande:

i mitt webform:

<asp:radiobuttonlist id="radioList" runat="server">
            <asp:listitem Value="3" Text="" class="radioPadding" GroupName="radioList" ID="option1" runat="server" />
            <asp:listitem value="1" Text="" class="radioPadding" GroupName="radioList" ID="option2" runat="server" />
            <asp:listitem value="2" Text="" class="radioPadding" GroupName="radioList" ID="option3" runat="server" />
            <asp:listitem value="4" Text="" class="radioPadding" GroupName="radioList" ID="option4" runat="server" />
        </asp:radiobuttonlist>

i codebehind

if (Page.IsPostBack)
{
     Response.Write(radioList.SelectedItem.Value);
}

Får error på det; CS0103: The name 'radioList' does not exist in the current context

Tror det har med att göra att den är i en repeater, att den inte kan/vill se att den finns ännu eftersom den ännu inte blivit ut loopad, men det är bara en snabb tanke.

Har inte en aning om man ska göra någon form av loop som kollar igenom varje item i min repeater, men vet ej vart jag ska börja där. =/

 

Alla har sina brister.
Redigerades av OjsanHejsan den 26 april 2011. Läs tidigare inlägg.
ID: #20953 | Skapades: 2011-04-26 17:10:04

Shadi
Shadi

Gradering

#20955

Kan det vara så att du behöver använda dig av FindControl?

Administratör på AspKoll.se!
ID: #20955 | Skapades: 2011-04-27 11:28:40

Nu har sagt nåt..! Ska kolla på detta imorn igen, är degig efter mycket pluggade idag.

Låter en foreach loop som kollar igenom min asp:reapeater efter alla items och i den hittar min radiobuttonlist vettigt?

Alla har sina brister.
ID: #20957 | Skapades: 2011-04-27 16:13:35

Shadi
Shadi

Gradering

#20958

Det låter som en möjlighet, men jag det är lite vad FindControl är menad att göra om jag förstod det rätt. Testa med den först och se ifall den löser ditt problem; för den ska söka igenom serverkontroller med hjälp av ID, därav din radiobuttonlist.

Administratör på AspKoll.se!
ID: #20958 | Skapades: 2011-04-27 18:36:12

Funkar fortfarande inte, hittar inget alls:

        foreach (RepeaterItem item in postQuestions.Items)
{
Control radioButtons = FindControl("radioList");
if (radioButtons != null)
{
// Get control's parent.
Control myControl2 = radioButtons.Parent;
Response.Write("Parent of the text box is : " + myControl2.ID);
}
else
{
Response.Write("Control not found ");
}
}

Får errorn som programmerats: Control not found.

Har testat att leta efter enskillda radiobuttons, min radiobuttonlist och en dummy-label som jag satte innanför min itemtemplate, och den hittat inget av dem. :S

Alla har sina brister.
ID: #20963 | Skapades: 2011-04-29 18:10:49

LP_MAXI
LP_MAXI

Gradering

#20964

Jag skulle gissa på att det här kan hjälpa dig. Jag har själv en laboration på universitetet nu som går ut på att tilldela ett värde i en länk som liger i en repeater som i sin tur ligger i ItemTemplate. 

Det är som Shadi säger FindControl du skall använda dig utav. 

Om jag hinner imorgon kan jag se om jag kan visa dig ett exempel hur jag gjorde, det bör inte vara någon större skillnad med en <asp:HyperLink> och det du vill få ut. 

http://www.lpmaxi.se/
ID: #20964 | Skapades: 2011-04-29 19:25:54

Det vore kanon om du kunde skicka upp koden, Sitter fast här. Har skickat till mina kompisar och lärare som är kompetenta inom området men alla kliar sig i huvudet som det ser ut som nu :S

Alla har sina brister.
ID: #20965 | Skapades: 2011-05-03 10:03:06

Gjorde om min foreach lite granna:

foreach (RepeaterItem item in postQuestions.Items)
{
RadioButtonList radioButtons = (RadioButtonList)item.FindControl("radioList");
if (radioButtons != null)
{
 Response.Write(radioButtons.SelectedItem.Value);

}
else
{
Response.Write("Control not found ");
}
}

Tack för all hjälp!

Nu ska jag bara lägg in allt i en databas och göra statistik över datan, så jag har en del kvar på denna modulen. ;) Koden ovan löste det mesta, spara den om ni vill tills den dagen ni behöver göra samma sak, för detta var fan inte roligt att sitta fast på. ;)

Alla har sina brister.
Redigerades av OjsanHejsan den 3 maj 2011. Läs tidigare inlägg.
Redigerades av OjsanHejsan den 3 maj 2011. Läs tidigare inlägg.
ID: #20966 | Skapades: 2011-05-03 10:14:43

Shadi
Shadi

Gradering

#20967

Va bra att du löste den. Tack för att du delade med dig av svaret, tror en del googlare kommer att ha nytta av den =)

Administratör på AspKoll.se!
ID: #20967 | Skapades: 2011-05-03 19:27:48

Det är därför såna här forum finns, man ska dela med sig av all sin kod och hjälpa andra att lösa andra problem :)

Skulle ytterligare förklaring behövas är det bara att höra av sig! :D

Nu kommer jag till nästa huvudkliare dock, ska hitta vilken fråga man svarat på vid enkät-svaret. Har satt datasource till en dataTable med bland annat frågeID inräknat. Nu kommer problemet att hämta det värdet dock. Startar en ny tråd där vi kan diskutera fram nästa svar ;D Hoppas på att kunna lösa det själv innan det dock.

Tack ännu en gång för att hjälp! :)

Alla har sina brister.
ID: #20968 | Skapades: 2011-05-03 19:40:53

Shadi
Shadi

Gradering

#20969

Inga problem :)

Ja det är bara att skapa tråden så ska vi försöka lösa det problemet också!

Administratör på AspKoll.se!
ID: #20969 | Skapades: 2011-05-03 22:29:01

Jag gjorde en riktig fuling. La in fragaID i en label i min repeater, där visible="false".

därefter hämtade jag värdet på samma sätt som jag hämtade radiobuttons. Börjar bli trött på projektet nu, och det ska endast vara en hi-fi prototyp så det får fasen blir bra nu. ;)

Alla har sina brister.
ID: #20970 | Skapades: 2011-05-04 11:59:38
Sida: 1 2
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy