Kom ihåg mig?
Home Menu

Menu


ViewState och RadioButtonList (.NET)

 
Ämnesverktyg Visningsalternativ
Oläst 2010-10-30, 11:05 #1
jayzee jayzee är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2008
Inlägg: 1 089
jayzee jayzee är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2008
Inlägg: 1 089
Exclamation ViewState och RadioButtonList (.NET)

Hej,

har ett dilemma jag hoppas någon av mer erfarna .NET utvecklare kan hjälpa mig med.
Jag håller nämligen på och utvecklar en Web Control i en miljö där ViewState och Session variabler är förbjudna och jag behöver läsa ut värde från en radio button efter att sidan laddats om (triggas av en server-side knapp). Det jag får ut är att värdet inte är satt (null) oavsett hur jag än försöker göra med medförande Application Error.

test.ascx:
Kod:
<asp:RadioButtonList ID="radioList" runat="server" RepeatLayout="Flow" EnableViewState="False"></asp:RadioButtonList>
<asp:Button ID="Button1" runat="server" Text="Reload" onclick="Button1_Click" />
test.ascx.cs:
Kod:
protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        radioList.Items.Clear();

        for(int i=0; i<5; i++)
            radioList.Items.Add(new ListItem("Fråga " + i.ToString(), i.ToString()));
    }
    else Response.Write("Valt värde: " + radioList.SelectedItem.Value);
}

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("Postback!");
}
jayzee är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-30, 12:42 #2
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Vid en postback kommer sidan ihåg fältens värden men man måste fortfarande lägga till komponenterna oavsett om det är postback eller ej. Skulle man starta debuggern borde man kunna se att radiogruppen inte har några items. Dessutom borde du lägga in det som ska hända i event-handlern (Click-metoden).

Följande borde funka:
Kod:
protected void Page_Load(object sender, EventArgs e)
{
        AddOptions();
}

private void AddOptions()
{
    for (int i = 0; i < 5; i++)
        radioList.Items.Add(new ListItem("Fråga " + i.ToString(), i.ToString()));
}

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("Postback!");
    Response.Write("Valt värde: " + radioList.SelectedItem.Value);
}

Senast redigerad av dAEk den 2010-10-30 klockan 15:27
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-30, 13:57 #3
jayzee jayzee är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2008
Inlägg: 1 089
jayzee jayzee är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2008
Inlägg: 1 089
Hej David och tack för din assistans.

Jag är medveten om att radiogruppen inte har några items, därav felet som uppstår. Hur som helst, även om jag ser till att radiolistan byggs upp även vid postback så uppstår samma fel (jag testade din kodsnutt ).
jayzee är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-30, 15:44 #4
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Yep, det är en till grej som behöver fixas och det är att lägga till komponenterna före OnLoad/Page_Load. Det har med ASP.NETs Page LifeCycle att göra.

OnInit brukar jag overrida och använda för att lägga till UserControls.

Kod:
protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    
    AddOptions();
}
Är inte helt säker att det här är 100% rätt. Jag tycker ofta att man har problem med ASP.NETs eländiga events och sidmodell (MVC-ramverk är mycket lättare att få grepp om!). Hoppas du får en knuff i rätt riktning iaf.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:55.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017