07. oktober 2007 - 21:30Der er
18 kommentarer og 1 løsning
gridView - UPDATE - DropDownList - Must declare the scalar vari..
Hej og på forhånd tak.
Jeg har nu søgt i overalt efter svar på mit problem og jeg kan simpelthen ikke lure den.
Jeg indrømmer gerne at asp.net er nyt for mig, men det virker ikke overvældende svrært, men der er dog nogle ting jeg bare ikke kan forstå. Så på forhånd tak fordi du forstår at min viden er hullet, oag at jeg muligvis spørger om noget ganske banalt.
SITUATIONEN: Jeg skal opdatere et felt [7pstat] i en række i et gridView. Helst med en dropDownList som kilde til den nye værdi.
setup: Surftown, DB: MS SQL server, platform: .net 2.0
PROBLEMET: Must declare the scalar variable "@syvPstatus".
sagt med andre ord. Jeg kan ikke binde min update sammen med værdien fra dropdownlisten.
Jeg har prøvet forskellige mere eller mindre fantasifulde løsninger, herunder forsøg med updateparameters (forstår dem ikke 100%)
SYMPTOMER: jeg kan vælge en værdi fra min dropdown, men får en fejl når jeg updater.
<asp:SqlDataSource runat="server" ID="TEstDB" ConnectionString="<%$ ConnectionStrings:publish_shopConnectionString %>" SelectCommand="SELECT DISTINCT * FROM ordre WHERE [7pstat]='800' OR [7pstat]='801' ORDER BY [ordrenr] DESC" UpdateCommand="UPDATE [ordre] SET [7pstat]=@syvPstatus WHERE [ordrenr] = @ordrenr"> <UpdateParameters> </UpdateParameters> </asp:SqlDataSource>
-------------------- koden er forsøgt reduceret til det absolut minimumme.
Alle forslag er meget velkomne, jeg er ved at blive meget træt af dette problem...
UpdateCommand="UPDATE [ordre] SET [7pstat]=@syvPstatusParam WHERE [ordrenr] = @ordrenr"> <UpdateParameters> <asp:ControlParameter Name="syvPstatusParam" ControlId="syvPstatus" PropertyName="SelectedValue"/> </UpdateParameters>
(Læg mærke til at UPDATE SQL er ændret her til at bruge værdien fra @syvPstatusParam) hvilket jeg håber at jeg har forstået rigtigt.
FELJ: Could not find control 'syvPstatus' in ControlParameter 'syvPstatusParam' --- hvilket måske er symptomatisk... jeg kan ikke forstå fejlen. burde den ikke kunne finde det når der findes en control med id="syvPstatus":
SelectedValue sammen med bind betyder at du skal binde det til en værdi fra din datakilde som ligger i en kolonne eller andet med navnet syvPstatus og din parameter skal også have samme navn når du opdaterer.
Ellers skal du hente værdien i codebehind og binde den til parameter.
Nårh ja - din Update command har jo slet ingen parametre defineret - har du strikket alt det her sammen i hånden ? Det er jo nok der der er gået galt:)
glem nu datavaluefield og datatextfield - eftersom din DDL IKKE er bundet til at hente værdier fra db'en så er disse irrelevante.. <asp:DropDownList runat="server" id="syvPstatus" DataValueField="syvPstatus" DataTextField="syvPstatus">
Hvis din ddl ikke er bundet fra databasen og den ligger i et gridview skal du hente den valgte værdi ud i codebehind. Brug evt on updating eventet på gridviewet eller på sql datasource. <asp:ControlParameter Name="syvPstatusParam" ControlId="syvPstatus" PropertyName="SelectedValue"/> Kan du kun bruge hvis din kontrol er unik i alle tilfælde og det vil den ikke være i et gridview. Men vil være i et formview f.eks.
Nå, men ok. Det viser sig jo at i begge havde ret, og jeg ikke fattede hvad det gik ud på.
Ved at fjerne mine update params og bruge
SelectedValue='<%#Bind("7Pstat")%>'>
(hvor den nu binder til feltet i min DB som hedder [7Pstat])
Ja, så virker det jo mange tak.
I burde jo dele point da i jo nærmest var lige hurtige med løsningen og begge har bidraget til min større forståelse (eller forvirring på et højere plan).
Jamen så smider vi bare et svar :) Tidligere kunne jeg også regne med at få nogle af pointsne af neoman når han stillede spm. Nu er han bare blevet meget bedre og jeg er mindre aktiv :)
Det er helt hyggligt at være tilbage på eksperten. Det er sq nogle år siden jeg var aktiv, jeg tror jeg var på første gang i '97 da jeg startede på datalogi... Det var dengang, og tænk at det skulle være her man endnu en gang fandt sin løsning på hvad der - endnu en gang - var et banalt problem... (Snøft, med nostalgiske toner i baggrunden og en ubehagelig fornemmelse af at være ved at blive gammel.)
Hehe. Jeg startede 2001. nicolas8586 du må give mere end 200 points for et spm. Derfor laver jeg et med 100 points som neoman kan smide et svar i: http://www.eksperten.dk/spm/799957
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.