webForumDet fria alternativet

Select och Repeater

2 svar · 387 visningar · startad av The_Hulk

The_HulkMedlem sedan juni 20031 837 inlägg
#1

Hur gör jag en dropdown-meny med en Repeater?
jag använder helst inte asp.net egna taggar utan riktiga HTML-taggar.

försöker jag lägga select-taggen utanför ASP:Repeater så får jag följande felmeddelande:
'HtmlSelect' cannot have children of type 'Repeater'.

Lägger jag select-taggen i HeaderTemplate OCH har satt runat="server" på select-taggen så får jag följande felmeddelande:
Unexpected end of file looking for </HeaderTemplate> tag.

Har jag inte runat="server" så fungerar den andra lösningen bra.

Jag måste dock ha runtat="server" eftersom jag behöver kunna komma åt värdena i selectboxen, dels för att komma åt värdet när man kör submit samt att jag vill kunna ställa in vilket värde som ska vara förvalt.

Hur ska jag göra?

butikoMedlem sedan jan. 2007152 inlägg
#2

jag använder helst inte asp.net egna taggar utan riktiga HTML-taggar.

Varför då?

Är du säker på att du har avslutat taggen? Använder du vanlig html så spelar det ingen roll (red. ja det är ju inte rätt men du får inte fel alltså... ;) ) men så fort du sätter runat="server" så måste den avslutas.

<select id="..." runat="server" />

Men du ska väl inte fylla den med en repeater, utan det gör du med selectlistans datasource. Eller vad är det du försöker göra?

MikeEastMedlem sedan sep. 200153 inlägg
#3

För att komma åt ett objekt som ligger i en repeater i code-behind, måste den ha runat=server (man kommer åt den på Repeaterns ItemCreated event t.ex.), men det har du ju märkt att det inte går i ditt fall eftersom taggen måste avslutas.

Men som butiko är inne på att det nog bättre att faktiskt använda <asp:DropDownList /> för det. Då kan du titta på t.ex. SelectedValue och SelectedIndex och lite sånt. Dessutom kan du använda AutoPostBack, vilket är användbart.

Såhär:

<asp:DropDownList runat="server" ID="MyDropDownList" DataTextField="MyTextField" DataValueField="MyValueField" />

Och code-behind:

if(!PostBack) {
    MyDropDownList.DataSource = MyIEnumerableObject; // t.ex. en DataTable
    MyDropDownList.DataBind();
}

Flexibiliteten på ASP.NETs färdiga kontroller kan väl diskuteras, men i detta fallet förstår jag inte poängen med att inte använda DropDownList.

Eller vad är det du försöker åstadkomma?

::m

131 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)