webForumDet fria alternativet

Datalist

41 svar · 704 visningar · startad av icaaq · sida 2 av 3

icaaqMedlem sedan okt. 20005 273 inlägg
#21

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

PatrikBMedlem sedan mars 20002 836 inlägg
#22

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

NETworkMedlem sedan juni 20011 732 inlägg
#23

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! :)

icaaqMedlem sedan okt. 20005 273 inlägg
#24

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

NETworkMedlem sedan juni 20011 732 inlägg
icaaqMedlem sedan okt. 20005 273 inlägg
#26

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

NETworkMedlem sedan juni 20011 732 inlägg
#27

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!

icaaqMedlem sedan okt. 20005 273 inlägg
#28

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

NETworkMedlem sedan juni 20011 732 inlägg
#29

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.

NETworkMedlem sedan juni 20011 732 inlägg
#30

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!";
  }
}
icaaqMedlem sedan okt. 20005 273 inlägg
#31

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.....

NETworkMedlem sedan juni 20011 732 inlägg
#32

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... ;)

icaaqMedlem sedan okt. 20005 273 inlägg
#33

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

NETworkMedlem sedan juni 20011 732 inlägg
#34

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

icaaqMedlem sedan okt. 20005 273 inlägg
#35

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

NETworkMedlem sedan juni 20011 732 inlägg
#36

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}")%>'
icaaqMedlem sedan okt. 20005 273 inlägg
#37

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

NETworkMedlem sedan juni 20011 732 inlägg
#38

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?

icaaqMedlem sedan okt. 20005 273 inlägg
#39

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*

icaaqMedlem sedan okt. 20005 273 inlägg
#40

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

137 ms totalt · 3 externa anrop · v20260731065814-full.ca5a5675
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)