Toon posts:

[C#.NET] Custom control data verlies

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey devppl,

Ik heb een custom control geschreven die een dropdownlist moet vervangen. Dit wil ik omdat het niet mogelijk is om de drop down area groter te maken dan de selectbox zelf in html.

Nu heb ik een probleem.
De dropdrowlist van mij bestaat uit een textbox en een listbox
Deze zijn in de custom control private gedeclareerd. Nu ben ik met een postback de listbox en textbox kwijt. logisch misschien. maar hoe kan ik het voorkomen zonder steeds de DB of welke source dan ook te benaderen.
Moet dat met sessies ofzo?
Ik gebruik visual studio .net met c#.
Ik kan de listbox door de getter functie vullen in de GUI van visual studio. maar deze is ook lost na compileren.

even wat code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class CustomDropList : System.Web.UI.WebControls.WebControl, 
PostBackEventHandler, IPostBackDataHandler{

....
private ListBox drop;

protected override void OnInit(EventArgs e){
            
    if (drop == null){
        drop = new ListBox();
    }
    drop.BorderWidth=1;
    if(base.EnableViewState) { 
        if(!Page.IsPostBack){
            drop.EnableViewState = true;
        }
    } else {
        drop.EnableViewState = true;
    }
    
}
        
public bool LoadPostData(String postDataKey, NameValueCollection values){
    if (((ListItem)drop.Items.FindByValue(values[this.UniqueID])) != null){
        ((ListItem)drop.Items.FindByValue(values[this.UniqueID])).Selected = true;
    }
    return false;
}
        
public void RaisePostDataChangedEvent(){

}
public void RaisePostBackEvent(String eventArgument){

}

...
...
...

/// <summary>
/// Gets the collection for the items.
/// </summary>
[Bindable(true), 
Category("Misc"), 
DefaultValue("")] 
public ListItemCollection Items {
    get{
        return drop.Items;
    }
}

}


Ik heb het gevoel alsof ik iets erg stoms wil doen of iets wat niet kan ofzo.
Hoe moet ik dat oplossen?
<EDIT>
Ik heb even de code=java gebruikt. kon c# niet vinden
</EDIT>

Commodus2

[ Voor 12% gewijzigd door Verwijderd op 11-03-2003 15:16 . Reden: code tag toevoegen ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
ViewState is your friend. Zie docs over ViewState hoe data persistent te houden tijdens postbacks op 1 page.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Die heb ik gelezen, als je die op msdn bedoelt.
Ik heb veel dingetjes gezocht voordat ik hier kwam, maar het is me nog niet gelukt dit op te lossen.
Ik heb viewstate enabled op de listbox.
viewstate heb ik wel aan de praat gekregen als ik een control rechtstreeks in de aspx file plaats. maar via mijn in de aspx geplaatste custom control een viewstate onthouden van een listbox is me nog niet gelukt.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Nee, je moet de data die je in de control zet, in de viewstate bewaren.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Hoe kan ik nou een listbox adden in de viewstate als de Items zollection alleen maat get is?
hoe weet ik wanneer er een item aan de interne listbox wordt toegevoegd?
Ik heb een Add functie in mijn control bijgebouwd en tijdens het adden aan de listbox voeg ik gelijk de listbox toe aan viewstate... maar dat werkt nog niet helemaal.
een hoop nullreference errors als ik hem uit viewstate wil halen.

Verwijderd

Misschien wat een te simpele oplossing maar heb je die HTML controls ook voorzien van het runat="Server" attribuut :) ? Ik meende te hebben gelezen dat die control dan automatisch ook z'n eigen viewstate bijhoudt.

Verwijderd

Topicstarter
nou.. ik zou graag willen dat die control zijn eigen viewstate vasthoud, maar het is een eigengemaakte control :(. ik moet dus zelf viewstate's bijhouden.
En ik heb geen idee hoe.. ik denk door het implementeren van de IStateManager interface(?)
had ik net ergens gelezen.

Ik hoop eigenlijk dat iemand hier al eens een custom control heb gebouwd

Verwijderd

Topicstarter
No matter peeps.
Ik heb het al.
Door de LoadStateView en de SaveStateView te overschrijven in mijn derived custom control, save en load ik alle data self via de base stateview.

twas ff zoeken maar toch gelukt!
Pagina: 1