![]() |
|
|
|||||||
| .NET I detta forum diskuteras ämnen som berör .NET-plattformen, bland annat asp.net. |
![]() |
|
|
Trådverktyg | Visningsalternativ |
|
|
#1 |
|
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>
Kod:
cmdUpdate.Parameters.Add("@UsrPresentation", strPresentation.Text)
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)
Kod:
cmdUpdate.Parameters.Add("@UsrPresentation", strPresentation.Text)
Tacksam |
|
|
|
|
|
#2 |
|
Medlem
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 |
|
|
|
|
|
#3 |
|
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 |
|
|
|
|
|
#4 |
|
Medlem
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 |
|
|
|
|
|
#5 |
|
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 |
|
|
|
|
|
#6 |
|
Medlem
Registrerad: 2001-01-05
Ort: Linköping
Inlägg: 2 107
Lösningar: 18 |
hmm du måste inte importera System.Data?
__________________
weeii! |
|
|
|
|
|
#7 |
|
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" %>
|
|
|
|
|
|
#8 |
|
Medlem
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... |
|
|
|
|
|
#9 |
|
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()
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
|
|
|
|
|
|
#10 |
|
Medlem
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... |
|
|
|
|
|
#11 |
|
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å
|
|
|
|
|
|
#12 |
|
Medlem
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... |
|
|
|
|
|
#13 |
|
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 struligtHar 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 |
|
|
|
|
|
#14 |
|
Medlem
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 |
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|