JAg fick en kanonhjälp förut när det gällde mina querystrings problem, och de är helt ok nu, men skulle Ett sätt som jag funderar på är: Du vet att du kan anropa metoder från din aspx sida va? Hej Emmanuel Ay. Hej Benni, Hej Emmanuel och tack för att du försöker.Lägga till mera info i en Repeater.
vilja ha till det lite mera.
Som det nu är, så listar jag mina titlar alfabetiskt, men man kan också söka via titel, kompositör eller
författare.
Just när det gäller sökning av kopositör eller författare, så är det de som jag ville lägga till i repitern,
men enbart då man har sökt på det, inte annars.
För att visa hur jag har gjort det i "gammla asp...
<code>
'detta är inne i loopen
sOrd=""
if LEN(Request("sSoeg"))>0 then
if Request("tables") = "Writer" then
sOrd = Rs("Writer")
elseif Request("tables") = "Music" then
sOrd = Rs("Music")
end if
end if
k=k+1
if LEN(sOrd)>1 then
response.write "" & Rs("Title") &"
else
response.write "" & Rs("Title")
& ""
end if
RS.MoveNext
Loop
</code>
Som det nu är, så lägger man ju allt i repitern..
<code>
Repeater1.DataSource = objPDS;
Repeater1.DataBind();
</code>
Hur skall man kunna lägga till info "Musik: Glenn Miller" om man nu sökte på musik, eller
"Text: Povel Ramel" om man sökte på författare?? (naturligtvis skall denna infon stå efter
melodititlarna.Sv: Lägga till mera info i en repiter.
<code>
<div align="right" runat="server" id="showWriter">Text: <%# DataBinder.Eval
(Container.DataItem, "Writer")%></div>
</code>
Om man sätter denna diven till visible=false, men hur skall jag kodvägen kunna ändra detta???Sv:Lägga till mera info i en repiter.
Typ:
<%# MetodSomAvgörVadSomSkallSkrivasUt( Container.DataItem ) %>
..som du givetvis har definerat i din code-behind såhär:
protected void MetodSomAvgörVadSomSkallSkrivasUt( object objContainer ) {
// Här i kan du känna av vad användaren valt att söka på
// och endast skriva ut den valda kolumnen.
}
Sv: Lägga till mera info i en repiter.
Det är just detta som jag har letat efter, men jag förstår inte hur det skall gå till.
Utgår först av allt, någon har söker på kompositör och har skrivit in co.
Detta passar t ex Corelis Wr.. och Cool Porter exc.
Jag ville då ha utskrivet:
Personliga Persson Musik Conelius Wr...
Begin the Beguine Musik Cool Porter
Likadant om man har sökt på textförfattare..
Om vi utgår ifrån classen:
<code>
protected void hideShow(object objContainer)
{
// Här i kan du känna av vad användaren valt att söka på
// och endast skriva ut den valda kolumnen.
}
</code>
Måste jag göra en ny databassökning, eller hur får jag in
<code>
ds.Tables["Titlar"].Rows[0]["Music"]
</code>
..eller kan man lägga till en extra parameter i hideShow(object objContainer,DataSet ds) ?
Sen att visa <%# hideShow( Container.DataItem ,"Music") %>
Är det så som du menar?Sv:Lägga till mera info i en repiter.
I din aspx skickar du in "container.dataitem" till metoden "hideShow". Detta innebär att objektet "container.dataitem" finns tillgängligt i metoden.
protected string hideShow(object objContainer)
{
// ...så objektet "objContainer" innehåller all information redan.
// Du kan rentav skriva ut vilka kolumner du vill här.
// Det du måste göra först är att lista ut vilken datatyp objektet
// "objContainer" har när det kommer in i denna metoden.
// Det gör du enklast genom att göra som följande:
return objContainer.ToString();
// Om det är som jag tror, så har du ett DataRow objekt i din objContainer
// och då skall du kunna skriva:
return ((DataRow)objContainer)["Music"];
}
OBS! Notera att returtypen på metoden "hideShow" är string!
Sv: Lägga till mera info i en repiter.
Jag har inte fått ditt exempel att fungera, men jag har kommit på någonting annat (kanske inte så
snyggt men det fungerar nästan 100%)
Eftersom jag har en del querystring i "luften" så tänkte jag att försöka använda dem:
<code>
<td>
<%# DataBinder.Eval(Container.DataItem,"Title") %>
<div align ="right" class="smallTitel" >
<% if(Request.QueryString["opt"] != null)%>
<%if (Request.QueryString["opt"] == "Writer")%>
Text: <%# DataBinder.Eval(Container.DataItem,"Writer") %>
<% if (Request.QueryString["opt"] == "Music")%>
Musik: <%# DataBinder.Eval(Container.DataItem, "Music") %>
</div>
</td>
<td align="right"><%# DataBinder.Eval(Container.DataItem,"Hits") %></td>
</tr>
</code>
Jag får inga som helst fel, och den visar vad den skall, söker man på författare så kommer writer fram
osv.
Problemet är att nu med Hits.Söker jag med mina "knappar" (A-Ö) då visas inga Hits, det gjorde den förut.
Söker jag på textförfattare, då visas heller inga Hits, men söker jag på kopositör (Music) DÅ VISAS HITS!!!
Underligt och som sagt, inga error.
Vad är felet?
" & sTables & ": " & sOrd & "
"