Jag har ett formulär på en aspx sida, beroende på vad formuläret innehåller (vilka fält som är i fyllda och med vad) vill jag köra olika SP:s och visa olika rapporter.
Hur löser jag det smidigast?
Ska jag ha en aspx sida och skapa flera olika repeaters (för de olika rapporterna) men enbart binda data till den jag vill nyttja?
Ska jag ha flera olika sidor för de olika rapporterna och posta datan till respektive sida? Hur gör man det smidigast i så fall?
I code-behind kan du lägga en funktion som körs när du trycker på knappen och gör din PostBack.
I den funktionen kollar du fälten och bestämmer din SP. Sen tar du resultatet och binder till en DataGrid eller Repeater. Om du i dina SP ger kolumnerna de namn som du vill ha i headern på rapporten kan du köra en DataGrid med AutoGenerateColumns=True.
Anledningen är enkel, det hela kommer att fungera ungefär som att ha flera repeaters på sidan med den stora fördelen att du har koden för de olika repeatersarna separerade i olika filer..vilket medför att det är väldigt mycket lättare att överskåda och hantera. Plus att du antagligen kommer att komma på att man kan göra user controlsen så att man kan använda dem på flera olika sidor.
Anledningen till att jag inte skulle använda olika sidor är att posta data inte är så bra då kan användarna själva modifiera querystring (whatever) och kanske få ut data som du inte vill ge dem. Plus att du inte kan 'återavnända' sidor på samma sätt som user controls
Tack för svaren. Jag vill kunna köra olika repeater mallar beroende på indatat, så idén med user controls verkar vettig.
Men hur gör jag enklast för att inte exekevera kod i onödan? Ska jag deklarera alla user controls på aspx sidan men sätta dom som visible=false tills jag vet vilken jag vill använda? Eller kan man göra på något bättre sätt?
Du skall ladda in den userControllen som du behöver. Så du deklarerar ingen usercontroll på sidan, utan lägger ditt en placeholder som du sedan gör Controls.Add() på och där skall den usercontrollen som du har laddat in vara.