webForumDet fria alternativet

Tips på lösning med repeater?

.NET

2 svar · 335 visningar · startad av joko

Medlem sedan maj 20075 inlägg
Frågan#1

Hej,

Jag har börjat fuska lite med ASP.NET och har hamnat i ett läge där jag inte riktigt vet hur jag ska göra.

Läget är som följer: Jag har en sida med en gridview med checkboxar för varje rad i grid:en. Vid val av ett antal checkboxar skickas man via en knapptryckning vidare till en annan sida där en repeater-kontroll visar upp data baserad på valen man gjorde i grid:en på den första sidan, (jag använder ett session-objekt för att hålla koll på vad som är valt från första sidan).

I repeaterns ItemTemplate finns några textboxar som man ska kunna fylla i och posta tillbaka till en databas-tabell.

Det är det sista momentet som jag inte riktigt får till. Jag har byggt ett objekt (eller ja, en klass alltså) som används som datasource både till gridview:en och repeatern (de använder dock olika select-metoder). Jag har också gjort en update-metod som jag vill använda i samband med repeatern på något vis, men jag fattar inte riktigt hur jag bäst gör detta.

Jag har en instans av mitt objekt i en objectdatasource på sidan där även repeatern är placerad och har angivit select- och update-metod i datasourcen.

När jag triggar ObjectDataSource.Update() via en knapptryckning så genereras de databasrader jag vill ha, dock utan data i de fälten som ska motsvaras av textboxarna. Lägger jag knappen i repeatern så verkar jag inte kunna trigga update-metoden explicit(jag har försökt sätta ett CommandName på knappen och fånga det i repeaterns ItemCommand-metod).

Någon som har förslag på en clean lösning på det jag vill göra? Alltså att välja ett antal rader ur en gridview, gå vidare till en ny sida där man ska kunna editera de valda raderna och slutligen skriva tillbaka dem till en databas.
Värt att veta är att raderna i gridviewen inte direkt motsvarar rader i en databastabell, utan data hämtas från flera tabeller och bildar tillsammans en rad.

Medlem sedan jan. 2007152 inlägg
#2

Borde inte vara något problem att trigga en funktion med repeaterns itemcommand... men det går även att ha en vanlig onclick på din button i din repeater och köra en funktion den vägen (och hämta ut ditt commandname).

Men är det rätt uppfattat att du ska uppdatera alla data i den här repeatern eller bara ett specifikt item? För i så fall ska du nog lägga knappen utanför din repeater och så får du loopa igenom hela innehållet... och du måste förstås ha någon identifierare i din repeater också så du kan identifiera dina data när du ska spara dem.

Kod?

Medlem sedan maj 20075 inlägg
#3

Tack för svaret.

Jag har dock övergivit repeatern nu till förmån för datalist. Det blir ju så att man bara har ett item i edit-mode i taget nu och inte alla samtidigt som jag hade i tankarna från början, men jag tror att det här kan duga och jag har fått det att funka.

400 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
263 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
260 ms — ändringar (db)