---
title: "Datalist"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/57930-datalist"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "icaaq"
published: "2002-11-04T09:22:11.000Z"
updated: "2002-11-08T07:33:31.000Z"
replies: 41
views: 730
page: 1
pages: 3
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/57930-datalist"
---

# Datalist

_Sida 1 av 3._

## #1 — icaaq, 2002-11-04T09:22Z

Jag har en datalist med en \<itemtemplate\> där jag loppar ut ett dataset.....men jag får inte ut värdena i mitt dataset, så här ser det ut nu

```
[red]
<asp:datalist id="DataList1" runat="server" width="100%">
																	<itemtemplate>
																		&middot;[b]<%# DataBinder.Eval(Container.DataItem, "f_answ")%>[/b]</td>
														<tr>
															<td>
																<table class="bar" cellspacing="0">
																	<tr>
																		<td class="bar" width="75%"><img src="images/nocansee.png"></td>
																		<td class="barend"><img src="images/barend.png" align="top"></td>
																	</tr>
																</table>
															</td>
														</tr>
												</itemtemplate> </asp:datalist>[/red]
```

men jagfår**DataBinder.Eval: 'System.Data.DataRowView' does not contain a property with the name f_answ.** 

hur ska jag göra?

Permalänk: https://www.webforum.nu/p/57930

## #2 — NETwork, 2002-11-04T10:06Z

Det verkar som om f_answ inte finns, är du säker på att du skrivit rätt? Tips: för att snabbt kolla vad som finns i ditt dataset och vad de olika kolumnerna heter, släng in det i en ren datagrid.

Permalänk: https://www.webforum.nu/p/844133

## #3 — icaaq, 2002-11-04T10:08Z

Jag binder Datalisten till detta DataSet

```
[red]
			string sqlAns = "SELECT f_answ pk_id from t_answ where f_que_id = " + Id;
			SqlDataAdapter myDa = new SqlDataAdapter(sqlAns, myConn);
			DataSet myDs = new DataSet();
			myDa.Fill(myDs, "t_answ");[/red]
```

Så den borde finnas där :)

Permalänk: https://www.webforum.nu/p/844136

## #4 — NETwork, 2002-11-04T10:13Z

Hm, och du behöver inte plotta dit ett litet kommatecken mellan f_answ och pk_id i din selectsats då?

Permalänk: https://www.webforum.nu/p/844139

## #5 — icaaq, 2002-11-04T10:14Z

jo.... :r

Permalänk: https://www.webforum.nu/p/844140

## #6 — icaaq, 2002-11-04T19:34Z

Nu vill jag räkna ut procenten på svaren i repeatern men hur ska jag göra då jag har ett fält i databasen som heter f_hits och ett fält som jag skapat i SQL-satsen som heter NoOfAnswers så jag får ut rätt data ur databasen det är bara hur jag ska kunna dela delen på det hela i loopen som är kruxet :OO

Summasummarum så vill jag dela f_hits med NoOfAnswers i en repeater......

mvh icaaq

Permalänk: https://www.webforum.nu/p/844550

## #7 — icaaq, 2002-11-04T20:05Z

Jag testade så här men det blev helt fel

```
[red]
<%#((Container.DataItem, "f_hits") / (Container.DataItem, "NoOfAnswers"))%>[/red]
```

Permalänk: https://www.webforum.nu/p/844585

## #8 — icaaq, 2002-11-04T21:20Z

Om inte det går på nått sätt hur ska jag lösa det då? kanske fixa allt i SQL-satsen eller labba med koden i \*.cs filen änu mer....

tacksam för alla svar och förslag

mvh icaaq

Permalänk: https://www.webforum.nu/p/844663

## #9 — renholm, 2002-11-04T22:05Z

Borde inte följande funka?

```
<%# Container.DataItem("f_hits") / Container.DataItem("NoOfAnswers") %>
```

Permalänk: https://www.webforum.nu/p/844703

## #10 — icaaq, 2002-11-05T09:01Z

Den gnäller att jag inte kan använda / med strings, så hur konverterar jag värdena till int ?

mvj icaaq

Permalänk: https://www.webforum.nu/p/844840

## #11 — PatrikB, 2002-11-05T09:41Z

om det vore VB så kan du parsa till int så här:

```
Int32.Parse(Container.DataItem("f_hits"))
```

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/844867

## #12 — PatrikB, 2002-11-05T09:46Z

eller kanske så här:

```
Public Function MakePercent(ByVal value As String, ByVal totalValue As String) As String
	Dim intValue As Double = Double.Parse(value)
	Dim intTotalValue As Double = Double.Parse(totalVAlue)

	Dim outPut As String = ((intValue / intTotalValue) * 100).ToString() & " %"

	return outPut
End Function
```

\<redigerat\>
redigerade i funktionen ovan från int32 till double (kanske inte ska typa om till integers ;) )
\</redigerat\>
Funktionen ovan får du lägga i din .aspx sida eller code-behind fil

Anropa den sedan i datalistens itemtemplate (om det är en sådan du använder):

```
<%# MakePercent(Container.DataItem("f_hits"), Container.DataItem("NoOfAnswers")) %>
```

om nu båda är av typen string, annars får du ändra i funktionen.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/844868

## #13 — NETwork, 2002-11-05T10:23Z

Den kastar ut strängar så du måste konvertera till en int, kan även göras direkt:

\<%# Convert.ToInt32(Container.DataItem("f_hits")) / Convert.ToInt32(Container.DataItem("NoOfAnswers")) %\>

Red: Sen får du snygga till det lite, så att du inte får avrundningsfel o sånt naturligtvis!

Permalänk: https://www.webforum.nu/p/844883

## #14 — icaaq, 2002-11-05T11:10Z

Jag gjorde en funktion av det hela

```
[red]
public string MakePercent(string Hits, string NoOfAnswers)
		{
			string MakePercent = ((Convert.ToInt32(Hits)*100)/ Convert.ToInt32(NoOfAnswers)).ToString();
			return MakePercent;
		}[/red]
```

Och den fungerar, om jag lägger in värdena för hand....men inte om jag ska lägga in dem med Container.DataItem. Om jag försöker med Container.DataItem("f_hits") så får jag
**CS0118: 'System.Web.UI.WebControls.DataListItem.DataItem' denotes a 'property' where a 'method' was expected**

Hur ska jag lösa det ?

mvh icaaq

\<redigerat\>

```
[red]
<%# MakePercent(Container.DataItem("f_hits"), Container.DataItem("NoOfAnswers"))%>[/red]
```

Sågör jag när det blir fel\</redigerat\>

Permalänk: https://www.webforum.nu/p/844918

## #15 — NETwork, 2002-11-05T11:26Z

public string MakePercent(object Hits, object NoOfAnswers)
//Sen får du göra dina objects till strängar i koden...

Permalänk: https://www.webforum.nu/p/844928

## #16 — icaaq, 2002-11-05T11:50Z

Nej det blir ju samma fel för det.....hör inte det felet ihop med Container.DataItem ?

Vad har dem för Properties?

Permalänk: https://www.webforum.nu/p/844952

## #17 — icaaq, 2002-11-05T12:25Z

Och när jag svarade på [denna](http://www.webforum.nu/showthread.php?s=&postid=483112#post483112) så fick jag svaret själv...... nu funkar det :e

Permalänk: https://www.webforum.nu/p/844970

## #18 — NETwork, 2002-11-05T12:32Z

Ah, ja det såklart... :)

Permalänk: https://www.webforum.nu/p/844977

## #19 — icaaq, 2002-11-06T13:34Z

Ok nu har jag ett problem igen.
Jag tänkte att jag skulle använda header och footer templates med men då gick jag bet. Hela upplägget ser ut såg ut så här innan ommöbleringen med header och footer....

Först hade jag en Frågan som var en label( den hämtar jag ur en datareader.
Sen loppade jag ut ett DataSet i en ItemTemplate där alla Svarsalternativ fanns.....

Det hade jag fixat så allt funkade. Men så tänkte jag visa totalt antal röster längst ner på pollen, då kom tanken på footer.

Men när jag har gjort så så kunde jag ju inte sätta texten på label(frågan) inne i HeaderTemplate och Totala antalet träffar visas inte heller.......Jag visar lite kod så kanske ni fattar ;)

```
[red][font=courier][1]
<asp:datalist id="DataList1" runat="server" cssclass="poll" cellpadding="4">
	<headertemplate>
			<span class="underline">Här vill jag visa frågan</span>														
	</headertemplate>
	<ItemTemplate>
				·<asp:linkbutton commandargument='<%#DataBinder.Eval(Container.DataItem, "pk_id", "{0:G}")%>' onclick="vote" runat="server" cssclass="four"><%# DataBinder.Eval(Container.DataItem, "f_answ", "{0:G}") %>:</asp:linkbutton><span class="percent"><%# MakePercent(DataBinder.Eval(Container.DataItem, "f_hits", "{0:G}"), DataBinder.Eval(Container.DataItem, "NoOfAnswers", "{0:G}"))%></span></td>
			<tr>
				<td>
					<table class="bar" cellspacing="0">
						<tr>
							<td class="bar" width="<%# MakePercent(DataBinder.Eval(Container.DataItem, "f_hits", "{0:G}"), DataBinder.Eval(Container.DataItem, "NoOfAnswers", "{0:G}"))%>"><img src="images/nocansee.png"></td>
							<td class="barend"><img src="images/barend.png" align="top"></td>
						</tr>
					</table>
	</ItemTemplate>
	<footertemplate>
		Totalt antal röster:<%# DataBinder.Eval(Container.DataItem, "NoOfAnswers", "{0:G}")%>
	</footertemplate>
	</asp:datalist>[/1][/font][/red]
```

Så frågorna lyder 
1\. Hur ska jag få in frågan som jag har i en DataReader, in i headertemplate.
2\. Varför visas inte **NoOfAnswers**

mvh icaaq

Permalänk: https://www.webforum.nu/p/845825

## #20 — NETwork, 2002-11-06T14:15Z

1) Jag har för mig att du kan använda DataList1.Controls\[0\].Controls\[0..1..2 osv\] för att komma åt kontrollerna i headern... skriv ut kontrollerna och se vad du hittar.

2) DataBinder.Eval.osv är ju en loopgrej som bara fungerar i itemtemplate. Du får använda en vanlig kontroll där.

Permalänk: https://www.webforum.nu/p/845838

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/57930-datalist  
Nästa sida: https://www.webforum.nu/amne/dotnet/57930-datalist/page2.md
