FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Har WN som tidsfördriv
|
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" /> 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!"); } |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
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 |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Har WN som tidsfördriv
|
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 ![]() |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
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(); } |
|||
![]() |
![]() |
Svara |
|
|