webForumDet fria alternativet

Repeater problem forts.

.NETur .NET

8 svar · 302 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Har alltså ett dataset. Och en repeater med en funktion som skapar en dropdownlist genom funktionen makeDDL.

<itemTemplate>
   <tr>
      <td>
         <big><%# Container.dataitem(1) %></big> 
         <br />
         &nbsp;&nbsp;<span style="FONT-SIZE: 0.9em"><%# Container.dataitem(2) %></span> 
      </td>
      <td align="right">
         <%# makeDDL(Container.dataitem(0)) %> 
      </td>
   </tr>
</itemTemplate>

makeDDL funktionen i repeaten ser ut så här och är tänkt att skapa och retunera en dropdown:

function makeDDL(g_id as integer) as dropdownlist
   g_id -= 1
   dim ddlGift as new dropdownlist()
   ddlGift.id = "ddl" & god_id
   ddlGift.Items.add(new listitem("Ingen"))
   ddlGift.Items.add(new listitem("aa 3"))
   ddlGift.Items.add(new listitem("aa 5"))
   ddlGift.Items.add(new listitem("aa 10"))
   ddlGift.Items.add(new listitem("bb 3"))
   ddlGift.Items.add(new listitem("bb 5"))
   ddlGift.Items.add(new listitem("bb 10"))
   ddlGift.Items.FindByText(dsG.tables(0).rows(g_id).item("tri_gift")).selected = true
   return ddlGift
end function

Problemet är att enligt ovan kod så retunerar funktionen texten "System.Web.UI.WebControls.DropDownList" istället för själva kontrollen. Antar att man skall använda en placeholder och sätta in dropdownen i den. Men hur gör jag det i en repeater. Eller finns det något bättre sätt att göra detta. Hjälp snälla. Börjar bli desperat.

NETworkMedlem sedan juni 20011 732 inlägg
#2

Måste du skapa den dynamiskt? Det borde ju gå att få samma resultat genom att helt enkelt låta en ddl ligga fast i din template och anropa en funktion som returnerar dess datakälla?

DinoMedlem sedan sep. 20011 914 inlägg
#3

Kan du visa lite i kod för hur du tänker så skulle det vara snällt.

Osv. Mina svar kan ta lite tid för tillfället för jag har lite problem med min anslutning.

NETworkMedlem sedan juni 20011 732 inlägg
#4

En liknande diskussion går just nu här på .net... titta längst ned i den här tråden så kanske du förstår lite bättre vad jag menar. Annars får du fråga igen.

http://www.webforum.nu/showthread.php?s=&threadid=64724

DinoMedlem sedan sep. 20011 914 inlägg
#5

Ok, tror jag förstår. Kommer tillbaka annars. Tack. :)

DinoMedlem sedan sep. 20011 914 inlägg
#6

Ok, det funkade fint, men...
Tar det från början. I en repeater så (finns det/skall det skapas) en ddl med sju fasta värden och för varje ddl så behöver jag gå in i ett dataset och titta på värdet i en viss kolumn och sätta den option som har det värdet till "selected". Sammanlagt skall det skapas sju ddl:er genom repeatern.
I koden från första inlägget så kan jag skapa en ddl och sätta "selected", men inte lägga in ddl:n där funktionen ligger.
I NETworks förslag så kan jag lätt skapa en ddl där den skall vara men vet inte hur jag skall sätta rätt option till "selected".

Någon som vet hur, för en helhetslösning?

DinoMedlem sedan sep. 20011 914 inlägg
#7

Kom på en lösning: :)

<itemTemplate>
   <tr>
      <td>
         <big><%# Container.dataitem(1) %></big> 
         <br />
         <span style="FONT-SIZE: 0.9em"><%# Container.dataitem(2) %></span> 
      </td>
      <td align="right">
         <asp:dropdownlist id="ddlBla" OnDataBinding="setSelected" Runat="server">
             <asp:listitem>Ingen</asp:listitem>
             <asp:listitem>aaa 3</asp:listitem>
             <asp:listitem>aaa 5</asp:listitem>
             <asp:listitem>aaa 10</asp:listitem>
             <asp:listitem>bbb 3</asp:listitem>
             <asp:listitem>bbb 5</asp:listitem>
             <asp:listitem>bbb 10</asp:listitem>
         </asp:dropdownlist> 
      </td>
   </tr>
</itemTemplate>

Använder OnDataBinding och däri

Sub setSelected(sender As Object, e As EventArgs)
   sender.Items.FindByText(dsG.tables(0).rows(g_id).item("tri_gift")).selected = true
   g_id += 1
End Sub
andreas_lindhMedlem sedan jan. 20011 140 inlägg
#8
sender.Items.FindByText(dsG.tables(0).rows(g_id).item("tri_gift")).selected = true

Jag förstår inte allt i den där koden

dsg, är det datasetet? Måst du inte deklarera det?
item("tri_gift"), vad är tri_gift?

NETworkMedlem sedan juni 20011 732 inlägg
#9

Det är ett dataset där han plockar ut den text han använder för att leta upp ett alternativ i dropdownlisten och som han sedan sätter som selected, där ska du alltså slänga in den sträng du vill ska vara selected i din dropdownlist. Om du exempelvis vill att "kalle" ska vara selected så skriver du så här:

sender.Items.FindByText("kalle").selected = true
135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)