Hej
Säg att man (tex) har en DataList där man använder edititemtemplate för att ändra i en post. När man klickar edit för att hamna i editeringsläget förlorar posten helt "fokus" och man hamnar överst på sidan.
I gamla asp hade jag använt nån #name tagg, men hur klämmer jag in det i asp.net (jag vill använda datalist och inte göra en egen)?
BrimbaMedlem sedan dec. 19995 875 inlägg Japp, det skulle vara intressant!
NETworkMedlem sedan juni 20011 732 inlägg Det där har vi också letat efter men inte hittat. :( Jag vet i alla fall att det går för jag har använt en kontroll (en trädstruktur, typ menyn i utforskaren) där sidan efter en postback ligger kvar på exakt samma ställe... men fan vet hur det fungerar.
Nu vet jag ju inte om EditItemTemplate är nån specialgrej, men jag vet att när jag kör postback och sätter AutoPostBack="True" i taggen, t.ex.
<asp:ListBox id="myBox" runat="server" rows="5" AutoPostBack="True" onSelectedIndexChanged="showSelection"/>
o sen med
If Not Page.IsPostBack Then
'lite kod
End If
så behåller den fokus..
NETworkMedlem sedan juni 20011 732 inlägg Jag kanske har missuppfattat, men jag tror han menar fokus på själva sidan... alltså att om en datagrid är högre än vad som får plats i ditt webbläsarfönster så ska den automatiskt scrolla ned till den rad där han gjorde en postback.
Annars har du rätt, till skillnad från gamla asp så kommer alla kontroller ihåg sina egna inställningar och innehåll oavsett hur många "roundtrips" du gör... om du kollar i sourcen på en aspx-sida som du surfat in på så ser du en <input type="hidden" value="dDwxNTU1ODY4MDc1O3Q8O osv..."> - där finns all information om alla kontroller och deras innehåll med för varje gång du gör en postback. Smidigt!
aha, okay på så vis.. :) ja du har rätt, det var väl därför han nämnde #name kom jag på (förstod inte först hur scenariot såg ut).
(Lite offtopic kanske.. men tänkte fråga apropå AutoPostBack; när det körs i kombination med onSelectedIndexChanged så läste jag att det blir långsamt om servern utsätts med för mycket sånt.. så min fråga är då om det trots allt är bättre att fortsätta köra såna grejer på klient-sidan? Eller blir prestanda acceptabel om man kompilerar klass-filen..? (har precis börjat testa .NET så jag har ingen erfarenhet av detta :)
NETworkMedlem sedan juni 20011 732 inlägg Nej, jag tror inte att det är mer prestandakrävande att använda autopostback än att göra en button som skickar dig till en funktion. Det är ju samma funktion du anropar, men från olika kontroller... Däremot förstår jag inte riktigt hur du menar att du skulle kunna göra detta på klienten istället? Med en autopostback direkt i exempelvis din dropdownlist eller via en vanlig button så anropar du en funktion i programkoden och den koden kan aldrig exekveras på klienten.
Så vad gäller prestandan så kan du nog lungt använda onselectedindexchange och autopostback, OM det nu är någon skillnad alls så är den nog marginell. Vad gäller kompilering så kompileras ALLTID koden du använder tillsammans med asp.net. Antingen gör du det själv (exempelvis via vs.net där du får en binkatalog med en dll-fil för varje assembly) eller så kompileras koden automatiskt första gången någon går in på sidan om du bara lägger upp dina aspx-filer direkt på servern.
aengmanMedlem sedan dec. 200150 inlägg <%@ Page SmartNavigation="true"%>
NETworkMedlem sedan juni 20011 732 inlägg Dock verkar det vara en bugg i smartnavigation. Om du gör en postback och sedan innan sidan hunnit laddas om trycker på en annan knapp så ballar hela sidan ur. Inte ofta man gör det iofs, men det är ändå irriterande.
ptypeMedlem sedan juni 2002151 inlägg Nån som vet hur man gör om man vid vissa tillfällen inte vill att den ska vara "smart"?
I mitt fall har jag ett felmeddelande som skrivs ut högst upp på sidan, och när detta inträffar skulle jag vilja ha fokus här.
P
NETworkMedlem sedan juni 20011 732 inlägg Har för mig:
Page.SmartNavigation = bool;