---
title: "Datalist"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/57930-datalist/page2"
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: 2
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 2 av 3._

## #21 — icaaq, 2002-11-06T20:10Z

Ett problem fixat....det första löste jag så här

```
[red][font=courier]
<asp:datalist id="DataList1" runat="server" cssclass="poll" cellpadding="4" OnItemCreated="R1_ItemCreated" >
	<headertemplate>
			<asp:label id="Label1" runat="server" cssclass="underline"/>														
	</headertemplate>
[/font][/red]
```

Och sedan kör jag denna för att kolla om det är rätt label...

```
[red][font=courier]
public void R1_ItemCreated(Object Sender, DataListItemEventArgs e) 

{ 
	poll myPoll = new poll();
	myPoll.Open();
	string Question = myPoll.Question.ToString();
	// Loop through and get all the controls 
	foreach(Control ctrl in e.Item.Controls) 
	{ 
		// Did we get a Web Control 
		Label lbl1 = (Label)e.Item.FindControl("Label1"); 

		// If the lbl1 is null it's not our label 
		if(lbl1 != null) 
		{ 
			lbl1.Text = Question;
		} 
	} 
}
[/font][/red]
```

Nu skulle jag bara vilja ha hjälp med den andra frågan :l

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

## #22 — PatrikB, 2002-11-06T21:16Z

Har denna koden (testkod):

```
    Dim AuthorTemp As String
    
    Sub Page_Load(Sender As Object, E As EventArgs)
    
        Dim _skin As String = "default.ascx"
    
            Dim ConnectionString As String = "server=(local);database=pbGuestbook;trusted_connection=true"
            Dim _book As New Guestbook(ConnectionString)
                _book.LoadEntries()
    
                '## - get rid. only for testing --
                If _book.Messages.count > 0 Then
                    AuthorTemp = _book.Messages(0).Author
                End If
                '## -- end get rid --
                
                dgGuestbook.DataSource = _book.Messages
                dgGuestbook.DataBind()
.... etc.
```

innanför script taggarna

sedan i min footer:

```
            <FooterTemplate>
                <% =AuthorTemp%>
            </FooterTemplate>
```

funkar fin fint

cya,
PatrikB

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

## #23 — NETwork, 2002-11-07T06:29Z

Jag är iofs ganska säker på att du kan skriva typ:

```
((Label)DataList1.Controls[0].Controls[0]).Text = "blah";
```

...för att komma åt din label i din header. Så slipper du en loop menar jag. :) Eller har du testat det utan att få det att funka? Funkar för mig här...

Fråga B vill även jag ha svar på, även om PatrikBs förslag säkert funkar så kommer säkert den dagen då man vill ha tag på en riktig kontroll där. Ska testa mer lite senare, eller om du löser det först  Icaaq, du brukar ju svara så bra på dina egna frågor! :)

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

## #24 — icaaq, 2002-11-07T06:30Z

Tack PatrikB detta funkade precis som vag ville.......så jag gjorde så på headertemplate´n med ......Jag insåg att det var lite overkill att lägga frågan i en label....

Tack igen

mvh icaaq

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

## #25 — NETwork, 2002-11-07T07:38Z

Lite läsning!

<http://www.aspalliance.com/stevesmith/articles/dotnethidedatabounditem.asp>

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

## #26 — icaaq, 2002-11-07T07:57Z

> **NETwork skrev:**
>
> Jag är iofs ganska säker på att du kan skriva typ:
>
>
> ```
> ((Label)DataList1.Controls[0].Controls[0]).Text = "blah";
> ```

Jag testade med din kod men jag får bara

**Specified argument was out of the range of valid values. Parameter name: index**

Så jag får det inte att funka ......kanske man kunde få se lite av din fungerande kod NETwork?

mvh icaaq

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

## #27 — NETwork, 2002-11-07T07:58Z

Detta verkar vara det rätta sättet att lösa det på:

```
private void testa(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
//Om vi är i headerrn:
  if (e.Item.ItemType == ListItemType.Header) {
// ...så kör du en findcontrol på ditt DataGridItemEvent: 
    ((Label)e.Item.FindControl("test")).Text = "TJO!";
  }
}
```

Fungerar lika bra på footern, en alternatingItem eller någon annan del i din datagrid!

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

## #28 — icaaq, 2002-11-07T08:02Z

Men då måste jag sätta in **OnItemCreated="testa"** i min \<asp:datalist\> eller ?

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

## #29 — NETwork, 2002-11-07T08:02Z

Glöm det där med controls\[0\].Controls\[0\], den är troligtvis beroende av en mängd faktorer, jag hade nog mest tur som hittade den just där... försök med koden ovan istället!

**Redigerat:** Jag tror att en headertemplate är en kontroll (inte ett item) precis som din label. Eftersom headern är den första kontrollen så finns den följdaktligen här myDatagrid.Controls\[0\] - alltid. I denna kan du sedan ha kontroller... som då blir Controls\[0\].Controls\[0\] den första kontrollen i din headeritemcontrol... jag tror det funkar så iaf.

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

## #30 — NETwork, 2002-11-07T08:05Z

> **icaaq skrev:**
>
> Men då måste jag sätta in **OnItemCreated="testa"** i min \<asp:datalist\> eller ?

Du använder inte codebehind/vs.net?

Nej, jag tror att du ska skriva onItemDataBound="FunktionensNamn" (i din datagrid alltså). Och då kan du nog inte ha funktionen private heller... sätt den till public. Med vs.net skriver du bara funktionens namn på raden ItemDataBound under dina events på din datagrid och trycker på enter så skapas funktionen automatiskt!

```
<asp:DataGrid id="myDataGrid" onItemDataBound="myFunction" Runat=Server>

public void myFunction(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
//Om vi är i headerrn:
  if (e.Item.ItemType == ListItemType.Header) {
// ...så kör du en findcontrol på ditt DataGridItemEvent: 
    ((Label)e.Item.FindControl("myLabel")).Text = "TJO!";
  }
}
```

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

## #31 — icaaq, 2002-11-07T08:14Z

Jo, jag använder cb/vs.net

Men om jag ska sätta mig i "design view" på min aspx sida får jag 
**Could not open in design view. Quote values differently inside a '\<% ... value ...%\>' block** 
hmmm ska kolla lite på asp.net hur jag kan få bort det.....

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

## #32 — NETwork, 2002-11-07T08:18Z

DÅ har du fel (alltså ojämnt) antal " i dina kodblock ...  har du mycket kod på sidan så kan det vara som att leta efter en nål i en höstack... ;)

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

## #33 — icaaq, 2002-11-07T08:20Z

Är det bara inom mina template´s eller på hela sidan :q

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

## #34 — NETwork, 2002-11-07T08:21Z

Jaa... inom eller runt dina \<%# %\> alltså.

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

## #35 — icaaq, 2002-11-07T08:32Z

Jag ser inget fel....

```
[red]
<asp:datalist id="DataList1" runat="server" cssclass="poll" cellpadding="4" >
	<headertemplate>
			<span class="underline"><asp:label id="myLabel" /></span>														
	</headertemplate>
	<ItemTemplate>
				&middot;<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: <span class="bold"></span>st
	</footertemplate>
</asp:datalist>[/red]
```

Kan nån se vad som är fel :)

mvh icaaq

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

## #36 — NETwork, 2002-11-07T08:50Z

Du kan inte ha " både runt dina kodblock och i dem. Då avslutas ditt kodblock vid första " i denna, alltså innan pk_id...

```
CommandArgument='<%#DataBinder.Eval(Container.DataItem, "pk_id", "{0:G}")%>'
```

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

## #37 — icaaq, 2002-11-07T08:55Z

Så hädanefter är det singelfnuttar som gäller..... :o

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

## #38 — NETwork, 2002-11-07T09:01Z

Japp! 

Vänta du tills du behöver tre nivåer... då får du problem. Har för mig att vi löste det på nåt sätt genom att skicka tillbaka till en funktion som bytte ut dem mot något annat som växlade tillbaka dem igen i ett javascript... hua. Nåja, det var nåt special special som antagligen borde ha gjorts på ett mycket mycket bättre sätt! ;)

Får du det att fungera förresten? Hittar du dina kontroller i footern och headern?

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

## #39 — icaaq, 2002-11-07T09:03Z

Det gör jag säkert.....Jag måste först lämmna barnen på dagis sen ska jag ge mig på det igen.......\*återkommer\*

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

## #40 — icaaq, 2002-11-07T16:00Z

Det funkade.....tack så mycket.......Jag ska fina till koden lite sen får ni se resultatet.....

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

---

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