Hej jag har en sida som tar emot ett Id, den fyller en massa dropdownlistkontroller med data, vid varje dropdownlistkontroll finns en imagebutton som öppnar ett popup-fönster med exempelvis
plusSign1.Attributes.Add("onclick", "window.open('HorseCreatePop.aspx',null,'height=450, width=600,status= no, resizable= no, scrollbars=yes, toolbar=no,location=no,menubar=no ');");
Där kan man fylla i x antal textbox och när man klickar på en knapp stängs popup-en och det körs en refresh på fönstret som öppnade popup-en via
<!--
function refreshParent() {
window.opener.location.href = window.opener.location.href;
if (window.opener.progressWindow)
{
window.opener.progressWindow.close()
}
window.close();
}
//-->
Sidan laddas om helt och värden jag valt i dropdownlistkontrollerna är inte valda, de finns där men om jag tex väljer ett alternativ i den ena, klickar på knappen får upp min popupp, stänger den så blir ju det första värdet i dropdownlisterna valda.
Någon som har ett förslag på hur jag kan lösa det här, hur jag kan få det underliggandet fönstret när det uppdateras via popuppen att komma ihåg tidigare val?
Antagligen så håller dina kontroler inte sin state för att du INTE gör en postback, utan gör en refresh på sidan.
Smidigast lösningen är nog att du har en javascriptfunktion på din MAIN-sida som körs när ditt popup-fönster stängs. I denna funktion skall du simulera en postback till sidan. Har aldrig gjort det förr, så jag vet inte säkert hur man gör, men det finns säkert exempel på nätet hur man fejkar en postback till din sida.
Jo, det jag menar är att "opener-sidan", dvs. den sida du vill ladda om, måste ha javascript-metoden "__doPostBack", definierad. Framework:et inkluderar denna metod automatiskt, om det finns en kontroll på sidan som kräver javascript för att kunna göra en submit (dvs, det är inte en submit-knapp). Kolla "view source" på sidan, så hittar du säkert funktionen.
Eventuellt fungerar även detta (och då krävs inte det som nämns ovan)
Tack emission, jag löste det med att lägga till ett RegisterStartupScript och den första kodsnutten du gav mig. Dock uppkom ett eminent problem med den underbara postbacken.
Funktionaliteten i den underliggande sidan går ut på att det är 14 dropdownlistkontroller som populleras med data från en databas i pageload. vid varje dropdownlistkontroll finns en imagebutton, det är om man klickar på en sådan popup-rutan kommer fram. Vad man gör i popupprutan är att man lägger till en post i databasen som sedan även ska finnas i hälften av de 14 dropdownlisterna efter man submittat infon i popup-rutan och den stängts och framkallat postbacken på sidan under. Det är det jag inte kan klura ut hur jag ska lösa.
Som jag har nu så fyller jag bara dropdownlisterna om det inte skett en postback. För jag vill ju inte att de ska fyllas på och fyllas på så att säga. Jag kan heller inte varje gång en postback sker tömma värdena i dropdownlisten och poppulera dem på nytt för då vet jag inte vilken som var vald innan postbacken.
Som jag ser det finns det två lösningar men bägge känns rätt omständiga. Det ena är att i dropdownlisterna onselectionindexchanged dunka i en cookie som talar om vilken listitem som senaste blev vald, den andra är att varje gång en postbacks körs, fylla dem med infon men bara ta med de som inte redan existerar. Finns det något lättare sätt?
Det finns 3892 andra tänkbara lösningar, med allt från ren clientside-kod till specialbyggda kontroller. En relativt enkel variant, eftersom lösningen på ett eller annat sätt ändå bygger på kommunikation mellan fönstren, vore att popup-fönstret inte själv uppdaterar databasen, utan att den endast skickar över infon via Javascript.
funktionen AddThing gör nu att ServerClick-eventet på hiddenbutton triggas, och då kan du passa på att lägga till i dina dropdowns, genom att "adda" ListItems.