webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > .NET

.NET I detta forum diskuteras ämnen som berör .NET-plattformen, bland annat asp.net.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2002-11-23, 17:49   #1
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
Update parameter som strular

Jag har en repeater som skriver ut värden i 10 textfält, klickar man på knappen i formuläret som repetern ligger i körs en update sub.

Problemet är att någe blir fel när jag skickar in parametrarna.

För att försöka underlätta ska jag bara försöka uppdatera ett av textfälten nu.

Textfältet skrivs ut med följande
Kod:
<asp:TableRow RunAt="server">
<asp:TableCell RunAt="server">
<asp:textbox Columns="108" cssClass="FormFalt" 
ID="strPresentation" Rows="6" runat="server" 
TextMode="MultiLine" Text='<%# Container.DataItem
("UsrPresentation") %>'  />	
</asp:TableCell>
</asp:TableRow>
koden för att lägga till parametern är
Kod:
cmdUpdate.Parameters.Add("@UsrPresentation", strPresentation.Text)
den klagar på
Compiler Error Message: BC30451: Name 'strPresentation' is not declared.

jag kan ju lösa det genom att deklarera i subben
Din strPresentation as String = Request.Params("strPresentation")

och sedan skriva
Kod:
cmdUpdate.Parameters.Add("@UsrPresentation", strPresentation)
tror jag iaf att man kan, men i mitt exempel i min asp.net bok så skriver de enbart
Kod:
cmdUpdate.Parameters.Add("@UsrPresentation", strPresentation.Text)
Varför fungerar det inte för mig ?

Tacksam
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-23, 18:42   #2
Pace
Medlem
 
Paces avatar
 
Registrerad: 2001-06-25
Inlägg: 5 947
Lösningar: 97
Är strPresentation någon form av webbkontroll/objekt?
Om inte så får du ta och hämta datan från Request objektet.
__________________
Take your god and shove him

Senast redigerad av Pace, 2002-11-23 klockan 18:56
Pace besöker inte forumet just nu   Svara med citat
Äldre 2002-11-23, 22:57   #3
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
strPresentation är ju en webkontroll i form av textbox

<asp:textbox Columns="108" cssClass="FormFalt"
ID="strPresentation" Rows="6" runat="server"
TextMode="MultiLine" Text='<%# Container.DataItem
("UsrPresentation") %>' />

Men det funkar inte, darn

Skriver jag så här
cmdUpdate.Parameters.Add("@UsrPresentation", Request.Params("strPresentation"))

så får jag

Exception Details: System.Data.SqlClient.SqlException: Prepared statement '(@UsrPresentation nvarchar(4000))UPDATE LL_users SET UsrPresenta' expects parameter @UsrPresentation, which was not supplied.

Senast redigerad av erka, 2002-11-23 klockan 23:08
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 13:11   #4
Pace
Medlem
 
Paces avatar
 
Registrerad: 2001-06-25
Inlägg: 5 947
Lösningar: 97
Om du använder codebehind så måste du deklarera strPresentation som en publik textbox.
__________________
Take your god and shove him
Pace besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 17:00   #5
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
Nope nada codebehind på denna sida. Skickar med hela som en txt fil. Får meddelandet

Exception Details: System.Data.SqlClient.SqlException: Prepared statement '(@UsrPresentation nvarchar(4000))UPDATE LL_users SET UsrPresenta' expects parameter @UsrPresentation, which was not supplied.

Tacksam
Bifogade filer
Filtyp: txt installningar_profil.txt (8.3 KB, 7 visningar)
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 17:02   #6
P
Medlem
 
Registrerad: 2001-01-05
Ort: Linköping
Inlägg: 2 107
Lösningar: 18
hmm du måste inte importera System.Data?
__________________
weeii!
P besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 17:05   #7
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
Såg att jag inte hade med den nu, dock får jag ändå samma felmeddelande <%@ import Namespace="System.Data" %>
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 17:44   #8
NETwork
Medlem
 
NETworks avatar
 
Registrerad: 2001-06-04
Ort: Västerås
Inlägg: 1 679
Lösningar: 15
Du måste nog ge UsrPresentation ett värde så här:
Kod:
cmdUpdate.Parameters.Add(new SqlParameter("@UsrPresentation", SqlDbType.NVarChar, 50));
cmdUpdate.Parameters["@UsrPresentation"].Value = Request.Params("strPresentation");
__________________
Man vet att man blivit gammal,
när man ger fler julklappar än man får...
NETwork besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 18:42   #9
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
Har provat det också men får fortfarande

Exception Details: System.Data.SqlClient.SqlException: Prepared statement '(@UsrPresentation nvarchar(800))UPDATE LL_users SET UsrPresentat' expects parameter @UsrPresentation, which was not supplied.

Då anger jag
Kod:
		Dim strSQL As String = String.Format("UPDATE LL_users SET UsrPresentation = @UsrPresentation WHERE (PK_UsrId = "+ IntUsrId +")")
		Dim strPresentation As String = Request.Params("strPresentation")
		ConMyData = New SqlConnection(strConn)
		cmdUpdate = NEW SqlCommand(strSQL,conMyData)
	    cmdUpdate.Parameters.Add(new SqlParameter("@UsrPresentation", SqlDbType.NVarChar,800))
		cmdUpdate.Parameters("@UsrPresentation").Value = Request.Params("strPresentation")
		ConMyData.Open()
		cmdUpdate.ExecuteNonQuery()
		ConMyData.Close()
Känns som om man blir galen snart kan man inte skriva som man gjorde i klassisk asp, alltså skriver variablen med innehållet direkt i frågan, men då måste jag ju ta bort ' tecken och ersätta dem med '', det skulle tydligen fixas automatiskt om man gör det med parametrar, men varför fungerar det inte tro
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 19:05   #10
NETwork
Medlem
 
NETworks avatar
 
Registrerad: 2001-06-04
Ort: Västerås
Inlägg: 1 679
Lösningar: 15
Har du skrivit ut Request.Params("strPresentation") och kollat vad den innehåller?
__________________
Man vet att man blivit gammal,
när man ger fler julklappar än man får...
NETwork besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 19:11   #11
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
Ooops den innehåller ingenting, vad i hela friden kan det bero på
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-24, 19:37   #12
NETwork
Medlem
 
NETworks avatar
 
Registrerad: 2001-06-04
Ort: Västerås
Inlägg: 1 679
Lösningar: 15
Eftersom du har din kontroll i en kontroll (din textbox i en repeater) så måste du gå via din repeater för att hitta din textbox... typ nåt i den här stilen (fritt skrivet, säkert fel, men du kanske förstår principen):
Kod:
((TextBox)MyRepeater.Items[e.Item.ItemIndex].FindControl("strPresentation")).Text
__________________
Man vet att man blivit gammal,
när man ger fler julklappar än man får...
NETwork besöker inte forumet just nu   Svara med citat
Äldre 2002-11-25, 18:59   #13
erka
Medlem
 
Registrerad: 1999-12-27
Ort: Lund
Inlägg: 4 597
Lösningar: 95
Neh nu blir jag snart galen Lyckas inte komma åt strPresentation på det vägen heller. Jag skulle kunna göra så kanske om jag kunde få e att bli RepeaterItemEventArgs, men det lyckas jag ju inte göra eftersom man ska klicka på min imgbutton och köra OnClick på den,usch vad det här var struligt

Har nu lagt min <asp:ImageButton> inne i min repeater </ItemTemplate> för jag antar att den måste vara där om jag på något sätt ska samköra dem
erka besöker inte forumet just nu   Svara med citat
Äldre 2002-11-25, 21:11   #14
NETwork
Medlem
 
NETworks avatar
 
Registrerad: 2001-06-04
Ort: Västerås
Inlägg: 1 679
Lösningar: 15
Hm, vänta nu här... kommer du någonsin att hämta mer än en rad från din databas??? Har du alltid en användare med en uppsättning data!? Då behöver du ingen repeater! Bort med den, kasta in användaruppgifterna i dina textboxar direkt så är det inga problem att spara sen! Det jag skrev ovan kan du glömma, ser att din button inte ligger i din repeater...

Om du nu skulle ha en knapp i din repeater någon gång i framtiden så kan du sätta ett commandargument på den för att enkelt veta vilken knapp som blivit tryckt på, exempelvis:
Kod:
<asp:ImageButton CommandArgument='<%# Container.DataItem("ID") %>' runat="server"></asp:ImageButton>
__________________
Man vet att man blivit gammal,
när man ger fler julklappar än man får...

Senast redigerad av NETwork, 2002-11-26 klockan 08:17
NETwork besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > .NET

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 11:17.


Powered by: vBulletin Version 3.8.6
Copyright © webForum