Jag har en label i en datalist som läser in värden från en databas. Värdena i labeln behöver jag i andra funktioner sen. Jag försöker då deklarera en variabel som hämtar värdet från labeln, t.ex. <code><asp:DataList id="DataList1" runat="server"> Hasse, Label-id är jag medveten om, försöker skriva mer generellt så att jag får tänka till lite och så jag lär mig. Dessvärre får jag ett felmeddelande: Hmm nu gick det när jag satte index till 0. Kul att det fungerar :) Hasse, Det är lysande, nu förstår jag. Pellesoft ar inte sveriges bästa programmeringssajt, utan världens, tack vare duktiga personer man får hjälp av :)Problem
<code> Dim test As String = Label.Text </code>
Problemet är att jag får följande fel: Namnet Label har inte deklarerats.
Finns det något annat sätt att lösa detta på? Labeln ska ju ha flera värden den ska lista upp och jag ska sen skriva ut andra värden vid sidan om labeln där innehållet i labeln avgör vad som ska hämtas in och skrivas ut.Sv: Problem
<ItemTemplate>
<table style="COLOR: black; BACKGROUND-COLOR: silver">
<tbody>
<tr>
<td width="150">
<asp:Label id="Label10" runat="server" font-size="X-Small" font-bold="True" text='<%# DataBinder.Eval(Container, "DataItem.Namn") %>'></asp:Label></td>
<td width="10"></td>
<td width="120">
<% =raknaMission() %></td>
</tr>
</tbody>
</table>
</ItemTemplate>
<HeaderTemplate>
<table style="COLOR: white; BACKGROUND-COLOR: indianred">
<tbody>
<tr>
<td width="150">
<asp:Label id="Label3" runat="server" font-size="X-Small" font-bold="True">Agent</asp:Label></td>
<td width="10"></td>
<td width="120">
<asp:Label id="Label2" runat="server" font-size="X-Small" font-bold="True">Antal uppdrag</asp:Label></td>
</tr>
</tbody>
</table>
</HeaderTemplate>
</asp:DataList>
</code>Sv: Problem
<code>
Dim test As String = Label.Text
</code>
Du har juh ingen label i din kod som heter "Label" däremot Label10, Label2 och Label3 ? För att få tag på din label och dess värde får du göra
[C#]
int Index = 1;
Label MyLable;
MyLabel = (Label)DataList1[Index].FindControl("Label10");
string test = MyLabel.Text;
[VB.NET]
<code>
Dim Index As Integer = 1
Dim MyLabel As Label
MyLabel = CType(DataList1.Items(Index).FindControl("Label10"), Label)
Dim test As String = MyLabel.Text
</code>
Där du bytar ut värdet på <b>Index</b> för att få rätt rad.
//Andreas
Sv: Problem
Det blir lite fel då när man ska visa koden efteråt :)
Men jag ska prova detta. Tack för hjälpen :DSv: Problem
System.ArgumentOutOfRangeException: Index låg utanför intervallet. Det får inte vara negativt och måste vara mindre än storleken på samlingen . Parameternamn: index
Detta oavsett värdet jag sätter på Index. Jag kör med VB.NET. Vad gör jag för fel?Sv: Problem
Någon som kan förklara varför så jag förstår det med? ;)
Och sen undrar jag var man ska ersätta CType med om det är datum. CDate fungerar inte.Sv: Problem
<b>CType</b> används för att typ konvertera från en typ till en annan. I vårt fall typ konverterar vi ett<b>WebControl</b> (som <b>FindControl</b> returnerar) till en <b>Label</b> kontroll. Detta gör vi då vi vet att det är en Label vi hittar och vill ha tillgång till alla metoder etc som vår label erbjuder.
Jag utgår ifrån att du menar att du vill hämta ut ett datum-värde från din label i din list? Om så är fallet så är det samma steg som förut, men när vi väl har <b>Label</b> kontrollen så skapar vi en ny <b>DateTime</b> baserat på värdet i labeln.
[C#]
int Index = 1;
Label MyLable;
MyLabel = (Label)DataList1[Index].FindControl("Label10");
// Konvertera textinnehållet i labeln till en DateTime.
DateTime datum = DateTime.Parse(MyLabel.Text);
[VB.NET]
<code>
Dim Index As Integer = 1
Dim MyLabel As Label
MyLabel = CType(DataList1.Items(Index).FindControl("Label10"), Label)
' Konvertera textinnehållet i labeln till en DateTime.
Dim datum As DateTime = DateTime.Parse(MyLabel.Text)
</code>
Lycka till!!
//Andreas
Sv: Problem