webForumDet fria alternativet

gridview, dynamiska kolumner och textboxar i templatecols

.NET

2 svar · 369 visningar · startad av hopparn

Medlem sedan nov. 20011 551 inlägg
Frågan#1

Hej
Nu har jag stött på ett knivigt problem.

Jag har en gridview på en sida, denna har 5 kolumner i grundutförande, kolumn 2 och 3 är textboxar med ifyllt värde från ett databundet objekt. Ovanför gridden finns en droplista med olika alternativ, vid val i listan sker autopostback och jag presenterar x antal extra kolumner med beräknade värden, dessa trycks in efter originalkolumn 2 och efter originalkolumn 3, detta fungerar utmärkt, jag loopar igenom och räknar ut hur många kolumner så att det stämmer.

det blir typ
från: kol 1 | kol 2 | kol 3 | kol 4 | kol 5
till: kol 1 | kol 2 | ny 1 | ny 2 | kol 3 | ny 1 | ny 2 | kol 4 | kol 5

där kol 2 och 3 som sagt är textboxar. (de nya kolumnerna är uträkningar baserade på textboxarnas värden)

problemställning:
Under gridden har jag en saveknapp, denna ska loopa igenom raderna och spara dem med de nya värdena i textboxarna i kol 2 och 3 (samt kol 5 som är en checkbox). Alltså vill användaren editera flera fält på en gång i gridden, lite som excel

Jag kan inte ha viewstate på på griddden, för då försvinner textboxarna vid postback. Eftersom jag inte har viewstate påslaget så existerar griddens antal rader, men de är tomma. Om jag slår på viewstate får jag tag på dem men tappar textboxarna vid postback (byter i droplistan för att se ny uträkning t ex) eftersom templatekolumnerna inte behåller sitt innehåll...

Jag provade faktiskt att skapa textboxarna och templatekolumnerna programmattiskt men stötte då på två problem. 1: min kunskap gjorde att jag inte hittade hur jag skulle sätta textboxens text från objektet vid laddning av sidan och 2: det var snårigt att kila in de nya dynamiska kolumnerna på rätt ställe...

någon som har en ide om hur jag ska laborera vidare?

mvh
Patrick

Medlem sedan maj 20012 812 inlägg
#2

hopparen skrev:

Jag kan inte ha viewstate på på griddden, för då försvinner textboxarna vid postback.

Det förstår jag inte, för lösningen borde vara att ha din viewstate påslagen och återskap alla dina controller i Page_Init(). Alltså all den kod som du kör för att skapa kontrollerna när du ändrar i din dropdownlista, skall du köra i Page_Init() metoden (eller i något tidigare event), så kommer ASP.NET att automatiskt binda ihop alla dina värden med dessa kontroller...

- M

Medlem sedan nov. 20011 551 inlägg
#3

ohoj, jag ska prova detta så fort jag kommer åt :)

Återkommer med resultat
(du förstod att textboxarna inte skapas programmattiskt utan ligger i templatekolumner i gridden på ascx sidan va, det är bara de dynamiska som byggs upp i codebehind vid postback)

290 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
149 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
149 ms — ändringar (db)