Har här en funktion där en label i en datalist skriver ut namn från db. Sen ska en annan funktion köras där den hämtar namnet och sen hämtar ett värde baserat på namnet i labeln. Problemet är att den tycks hela tiden bara hämta det första värdet i labeln. Ex: Orkade inte läsa genom din kod helt, men ev har du felet här: Hr du färdigt värde i ditt resultat? i så fall binds det ju automatiskt. Men måste du utföra en beräkning av befintligt värde från tidigare fråga kan du enkelt göra ett anrop mot en metod som tar en inputparameter som sedan användsa för din uträkning. Hmm, lät dessvärre som Help på VS.NET, sitter bara med webmatrix :( Varför inte skicka med namn ( id eller vad du nu vill använda) i funktionen raknaMission(). Då border du lösa ditt problem. Mycket bra grundtanke, men provade liknande sak, det verkar som om labeln "tappar" värdet redan raden efter. Varför använda label?Datalist?
Anna 26
Bertil 26
Caesar 26
osv
För Anna ska värdet vara 26, men inte för de andra. Vad har jag gjort för fel?
<code>
<%@ Page Language="VB" Debug="true" %>
<%@ Register TagPrefix="uc0" TagName="meny" Src="meny.ascx" %>
<%@ Register TagPrefix="uc0" TagName="header" Src="header.ascx" %>
<%@ Register TagPrefix="wmx" Namespace="Microsoft.Matrix.Framework.Web.UI" Assembly="Microsoft.Matrix.Framework, Version=0.6.0.0, Culture=neutral, PublicKeyToken=6f763c9966660626" %>
<script runat="server">
Sub Page_Load()
If Not Page.IsPostBack Then
lblSession.Text = Session("Anv")
DataList1.DataSource = getAgent()
DataList1.DataBind()
End If
End Sub
'Räknar antalet avklarade uppdrag
Function raknaMission()
Dim Index As Integer = 0
Dim MyLabel As Label
MyLabel = CType(DataList1.Items(Index).FindControl("Label10"), Label)
Dim id As String = MyLabel.Text
Dim connectionString As String = "server='(local)'; trusted_connection=true; Database='TM'"
Dim sqlConnection As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "SELECT COUNT([agent]) FROM [tmfil] WHERE (([tmfil].[agent] = @session) AND ([tmfil].[svar] <> 'Svarar') AND ([tmfil].[samtalsforsok] < '8') AND ([tmfil].[actcode] = 'A'))"
Dim sqlCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(queryString, sqlConnection)
sqlCommand.Parameters.Add("@session", System.Data.SqlDbType.VarChar).Value = id
sqlConnection.Open
Dim antal As Object = sqlCommand.ExecuteScalar()
sqlConnection.Close
Return antal
End Function
Function getAgent() As System.Data.IDataReader
Dim connectionString As String = "server='(local)'; trusted_connection=true; database='TM'"
Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "SELECT [login].[Namn] FROM [login] WHERE (([login].[Kategori] = '2') OR ([login].[Kategori] = '3'))"
Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
dbConnection.Open
Dim dataReader As System.Data.IDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
Return dataReader
End Function
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p align="center">
<table>
<tbody>
<link href="../_themes/compass/theme.css" type="text/css" rel="stylesheet" />
<tr>
<td>
<uc0:header id="UserControl2" runat="server"></uc0:header>
</td>
</tr>
<tr>
<td>
<asp:Label id="Label1" runat="server" font-size="X-Small" font-bold="True">Du är inloggad
som: </asp:Label> <asp:Label id="lblSession" runat="server" font-size="X-Small"></asp:Label></td>
</tr>
</tbody>
</table>
</p>
<p align="center">
</p>
<p align="left">
<table width="700">
<tbody>
<tr>
<td valign="top" align="left" width="25%">
<uc0:meny id="UserControl1" runat="server"></uc0:meny>
</td>
<td width="1%">
</td>
<td valign="top" align="left">
<p>
<asp:Label id="Label2" runat="server" font-bold="True">Utdelade uppdrag</asp:Label>
</p>
<p>
<asp:DataList id="DataList1" runat="server">
<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>
</p>
</td>
</tr>
</tbody>
</table>
</p>
</form>
</body>
</html>
</code> Sv: Datalist?
Du har index 0 hela tiden så MyLabel får samma värde.
Dim Index As Integer = 0
Dim MyLabel As Label
MyLabel = CType(DataList1.Items(Index).FindControl("Label10"), Label)
Mvh JohanSv: Datalist?
på ASP sidan kan du ex skriva:
<asp:TemplateColumn HeaderText="Foo">
<ItemTemplate>
<%# GörNågotKul((String)DataBinder.Eval(Container.DataItem, "DataFältVärde")) %>
</ItemTemplate>
</asp:TemplateColumn>
I din kod har du sedan en metod som heter typ GörNågotKul(string value)
där du med hjälp av value gör din beräkning som du sedan returnerar.
Hoppas du hängde med, om inte så sök på DataBinder i Hjälpen...
Mvh JohanSv: Datalist?
Försökte dom med en do while-loop, men den verkar inte vilja räkna upp. Och det är inga fasta värden, utan de ska räknas ut.Sv: Datalist?
/JanneSv: Datalist?
Sv: Datalist?
<%# raknaMission(DataBinder.Eval(Container, "DataItem.Namn")) %>
Och sen funktionen:
Function raknaMission(strName As String)
Torrsim så det kanske inte fungerar direkt men du har principen.
/Janne