Multidesk.be » Forums » ASP » Waarde van textbox in Repeater oproepen

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door Ezio op zondag 20 april 2014 om 03:14:12.
Ezio's avatar
Multiviteit: 973
Hey,

Op een pagina heb ik een paar textboxen die gebonden zijn met een waarde uit de databse. Het is de bedoeling dat de gebruiker de lege velden invult en vervolgens bevestigt met een knop. Wanneer er op deze knop geklikt wordt moeten deze gegevens verwerkt worden in de databank, daarom gebruik ik 'FindControl' om na te gaan welke waardes de gebruiker heeft ingegeven.

Code repeater:
CODE
  1. <asp:Repeater ID="repAdresgegevens" runat="server" DataSourceID="sqldtsAdresgegevens">
  2.                  
  3.                  <ItemTemplate>
  4.                      <table class="grid-50 prefix-25 suffix-25">
  5.                          <tr>
  6.                              <td>Straat en nummer:</td>
  7.                              <td><asp:TextBox ID="txtStraat" CssClass="textbox" runat="server" Text='<%# Bind("Klant_Adres_Straat")%>'></asp:TextBox></td>
  8.                              <td colspan="3"><asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Straat is verplicht" ControlToValidate="txtStraat"></asp:RequiredFieldValidator></td>
  9.                          </tr>
  10.  
  11.  
  12.                          <tr>
  13.                              <td>Postcode:</td>
  14.                              <td><asp:TextBox ID="txtPostcode" runat="server" CssClass="textbox" maxlength="4" Text='<%# Bind("Klant_Adres_Postcode")%>'></asp:TextBox></td>
  15.                              <td colspan="3"><asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Postcode is verplicht" ControlToValidate="txtPostcode"></asp:RequiredFieldValidator></td>
  16.                          </tr>
  17.  
  18.  
  19.                          <tr>
  20.                            <td>Gemeente:</td>
  21.                              <td><asp:TextBox ID="txtGemeente" runat="server" CssClass="textbox" Text='<%# Bind("Klant_Adres_Gemeente")%>'></asp:TextBox></td>
  22.                              <td colspan="3"><asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Gemeente is verplicht" ControlToValidate="txtGemeente"></asp:RequiredFieldValidator></td>
  23.                          </tr>
  24.  
  25.  
  26.                          <tr>
  27.                              <td>Land:</td>
  28.                              <td><asp:DropDownList ID="ddlLand" runat="server" cssclass="textbox" DataValueField='<%# Bind("Klant_Adres_Land")%>'>
  29.              <asp:ListItem Value="Belgie">BelgiŽ</asp:ListItem>
  30.              <asp:ListItem>Nederland</asp:ListItem>
  31.              </asp:DropDownList></td>
  32.                              <td colspan="3"><asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="Land is verplicht" ControlToValidate="ddlLand"></asp:RequiredFieldValidator></td>
  33.                          </tr>
  34.  
  35.  
  36.                          <tr>
  37.                              <td>Telefoonnummer:</td>
  38.                              <td><asp:TextBox ID="txtTelefoonnummer" runat="server" CssClass="textbox" Text='<%# Bind("Klant_Telefoon")%>'></asp:TextBox></td>
  39.                              <td colspan="3"><asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ErrorMessage="Telefoonnummer is verplicht" ControlToValidate="txtTelefoonnummer"></asp:RequiredFieldValidator>
  40.                      <asp:MaskedEditExtender ID="MaskedEditExtender2" TargetControlID="txtTelefoonnummer" Mask="999\/99\/99\/99" masktype="Number" InputDirection="LeftToRight" AcceptNegative="None"  runat="server"></asp:MaskedEditExtender></td>
  41.                          </tr>
  42.  
  43.  
  44.                          <tr>
  45.                              <td>GSM-nummer:</td>
  46.                              <td><asp:TextBox ID="txtGSM" runat="server" cssclass="textbox" Text='<%# Bind("Klant_Gsm")%>'></asp:TextBox></td>
  47.                              <td colspan="3"><asp:MaskedEditExtender ID="MaskedEditExtender3" TargetControlID="txtGSM" Mask="999\/99\/99\/99" masktype="Number" InputDirection="LeftToRight" AcceptNegative="None"  runat="server"></asp:MaskedEditExtender></td>
  48.                          </tr>
  49.                      </table>
  50.                    
  51.                  </ItemTemplate>
  52.              </asp:Repeater>


Code behind:
CODE
  1. Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  2.         'Ingevoerde adresgegevens wegschrijven naar database
  3.         Dim strStraat, strPostcode, strGemeente, strLand, strTelefoon, strGSM As String
  4.  
  5.         Dim txtStraat As New TextBox
  6.         txtStraat = CType(repAdresgegevens.FindControl("txtStraat"), TextBox)
  7.  
  8.         Dim txtPostcode As TextBox
  9.         txtPostcode = CType(repAdresgegevens.FindControl("txtPostcode"), TextBox)
  10.  
  11.         Dim txtGemeente As TextBox
  12.         txtGemeente = CType(repAdresgegevens.FindControl("txtGemeente"), TextBox)
  13.  
  14.         Dim ddlLand As DropDownList
  15.         ddlLand = CType(repAdresgegevens.FindControl("ddlLand"), DropDownList)
  16.  
  17.         Dim txtTelefoon As TextBox
  18.         txtTelefoon = CType(repAdresgegevens.FindControl("txtTelefoon"), TextBox)
  19.  
  20.         Dim txtGSM As TextBox
  21.         txtGSM = CType(repAdresgegevens.FindControl("txtGSM"), TextBox)
  22.  
  23.  
  24.  
  25.         strStraat = txtStraat.Text
  26.         strPostcode = txtPostcode.Text
  27.         strGemeente = txtGemeente.Text
  28.         strLand = ddlLand.SelectedValue
  29.         strTelefoon = txtTelefoon.Text
  30.         strGSM = txtGSM.Text
  31.  
  32.  
  33.  
  34.         Dim strSQL As String
  35.         Dim sqlcon As New SqlConnection(ConfigurationManager.ConnectionStrings("cnnGamezilla").ConnectionString)
  36.         Dim sqlcmd As New SqlCommand
  37.  
  38.  
  39.         strSQL = "INSERT INTO tblKlanten(Klant_Adres_Straat,Klant_Adres_Postcode,Klant_Adres_Gemeente,Klant_Adres_Land,Klant_Telefoon,Klant_Gsm)"
  40.         strSQL &= "VALUES(@Straat,@Postcode,@Gemeente,@Land,@Telefoon,@GSM)"
  41.  
  42.         With sqlcmd
  43.             .Connection = sqlcon
  44.             .CommandText = strSQL
  45.             .Parameters.AddWithValue("@Straat", strStraat)
  46.             .Parameters.AddWithValue("@Postcode", strPostcode)
  47.             .Parameters.AddWithValue("@Gemeente", strGemeente)
  48.             .Parameters.AddWithValue("@Land", strLand)
  49.             .Parameters.AddWithValue("@Telefoon", strTelefoon)
  50.             .Parameters.AddWithValue("@GSM", strGSM)
  51.         End With
  52.  
  53.         sqlcon.Open()
  54.  
  55.         sqlcmd.ExecuteNonQuery()
  56.  
  57.         sqlcon.Close()
  58.  
  59.  
  60.         'De gegevens werden weggeschreven en we sturen de klant nu door naar de betaalpagina
  61.         Response.Redirect("Betaalpagina.aspx")


Helaas krijg ik telkens onderstaande error te zien.

http://i.snag.gy/VZk74.jpg


Alvast bedankt en projectje is weer op aanvraag verkrijgbaar :D

I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #1 geschreven door thekid op maandag 21 april 2014 om 00:45:08.
thekid's avatar
Multiviteit: 5273
Moderator
kort gezegd, een repeater dient daar niet voor :)

maar je kan het wel :) via volgend voorbeeldje

http://stackoverflow.com/questions/6925592/how-to-get-data-from-controls-in-repeater
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door Ezio op donderdag 1 mei 2014 om 20:02:21.
Ezio's avatar
Multiviteit: 973
Ik ben erin geslaagd om mijn eerste probleem via een andere manier op te lossen, maar zit nu weer met hetzelfde probleem...

Hieronder mijn code behind, maar krijg nog steeds dezelfde error.
CODE
  1. For Each Repeateritem In repHome.Items
  2.  Dim lbl As New Label
  3.  lbl = CType(e.Item.FindControl("lblBerichtTussentekst"), Label)
  4.  
  5.  
  6.             If lbl.Text = "blogpost" Then
  7.                 lbl.Text = "Auteur publiceerde een nieuw blogbericht: "
  8.             Else
  9.                 If lbl.Text = "video" Then
  10.                     lbl.Text = "Auteur publiceerde een nieuwe video: "
  11.                 End If
  12.             End If
  13. Next
  14.  
  15.  


Asp label:
CODE
  1. <asp:Label ID="lblBerichtTussentekst" runat="server" Text='<%#Eval("Soort bericht")%>'></asp:Label><br />
Deze tekst werd het laatst bewerkt voor 9.49 % door Ezio op donderdag 1 mei 2014 om 20:03:09.
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #3 geschreven door thekid op vrijdag 2 mei 2014 om 19:36:03.
thekid's avatar
Multiviteit: 5273
Moderator
Ik heb past zondag tijd ;)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #4 geschreven door Ezio op vrijdag 2 mei 2014 om 20:04:09.
Ezio's avatar
Multiviteit: 973
Geen probleem, er is geen haast bij :)
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #5 geschreven door thekid op maandag 5 mei 2014 om 20:42:25.
thekid's avatar
Multiviteit: 5273
Moderator
Goed,

eerste antwoord blijft, waarom zou je achteraf nogmaals door je repeaters gaan om dit aan te passen? Het is iets dat je heel gemakkelijk vanaf je datasource kunt maken

je gebruikt hiervoor dan bvb een klasse, of je voegt in je dataset een readonly veld toe die het type van je record terugstuurt (nl video of blog)

een voordeel hiervan is dat je je logica daarna ook zo weinig mogelijk hoeft te herhalen, je zal steeds het type in je dataset hebben ;)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #6 geschreven door Ezio op dinsdag 6 mei 2014 om 22:41:43.
Ezio's avatar
Multiviteit: 973
In mijn tabel is er een veld die bij elke post 'video' of 'blog' toont. Via een EVAL stel ik dan de CSS-klasse van het RepeaterItem gelijk aan de waarde van dit veld (een video ziet er immers anders uit dan een gewoon blogbericht). Ik probeerde om op gelijkaardige wijze ook de tekst aan te passen, maar dit lukte niet:
CODE
  1. Text='<% "Auteur publiceerde een : " & If(VELD = "blogbericht", "nieuw blogbericht", "nieuwe video") & ":" %>'

Deze tekst werd het laatst bewerkt voor 0.79 % door Ezio op dinsdag 6 mei 2014 om 22:43:27.
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #7 geschreven door thekid op woensdag 7 mei 2014 om 01:19:10.
thekid's avatar
Multiviteit: 5273
Moderator
ik zal je morgen wel een klein voorbeeld sturen :D
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #8 geschreven door thekid op woensdag 7 mei 2014 om 20:30:44.
thekid's avatar
Multiviteit: 5273
Moderator
Ik bedenk mij eigenlijk net dat mijn originele repeater dit verschil kende, die heb ik je toch ook eens doorgestuurd? :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #9 geschreven door Ezio op woensdag 7 mei 2014 om 20:59:50.
Ezio's avatar
Multiviteit: 973
In dat voorbeeldje wijzigde je toch geen attribuut zonder de code behind? :)

EDIT: We hebben trouwens pas vorige week OOP gezien op school, kan nu ook het OOP-gedeelte van je voorbeeldje veel beter analyseren :)
Deze tekst werd het laatst bewerkt voor 2.39 % door Ezio op woensdag 7 mei 2014 om 21:08:13.
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #10 geschreven door thekid op woensdag 7 mei 2014 om 21:25:19.
thekid's avatar
Multiviteit: 5273
Moderator
Wij kunnen hier misschien eens gebruik maken van visual studio online, om projecten te delen :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #11 geschreven door Ezio op woensdag 7 mei 2014 om 21:29:40.
Ezio's avatar
Multiviteit: 973
Vind die Team Foundation nogal ingewikkeld :s Ben jij er al in geslaagd om het te doen werken?
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #12 geschreven door thekid op woensdag 7 mei 2014 om 21:37:54.
thekid's avatar
Multiviteit: 5273
Moderator
Ja, we hebben er nog bij Konica mee gewerkt

maar via het online gedeelte kan je normaal vrij eenvoudig checkin/checkouts toepassen, ik zou je gewoon moeten toevoegen als project member en je kan dan mijn voorbeeld uitchecken, of vragen aan me doorsturen :)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen