Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Dynamiskt skapade textboxar - hämta värde vid "INSERT INTO..."-sats...

Postades av 2006-02-21 12:03:17 - Björn Berglund, i forum asp.net generellt, Tråden har 3 Kommentarer och lästs av 511 personer

dynamisk tabell - lagra textboxars värde till data

Hej alla smarta,

Har genom nedanstående kod lyckats ska en dynamisk tabell. Den skapar helt enkelt ett antal rader med en textbox för varje rad. Efter att användaren har fyllt i textboxarna vill jag lagra dessa värden. Men hur gör jag det? Använder Asp.net 1.1, VB och MS Access.


While (i < antalrader)
Dim row As New TableRow
Dim cell As New TableCell
'Dim cell2 As New TableCell
'Dim label As New Label
'label.Text = "Produktnamn"
Dim txb As New TextBox
txb.id = "boxen" & i.ToString()

txb.cssclass="formtext"
cell.Controls.Add(txb)
'cell2.Controls.Add(txb)
response.Write(txb.id)
row.Cells.Add(cell)
'row.Cells.Add(cell2)
produktnamnen.Rows.Add(row)
i = i + 1
end while

Gör nu så här:

dim sql5 as string = "INSERT INTO tblTestprod(test_id,produktnamn) VALUES(" & Session("NyttTestid") & ",'" & produktnamnen.Rows(0).Cells(0).Text & "')"


Men när jag kör Response.write(sql5) så får jag att värdet på mina textboxar är tomt ( = "")....

Någon som har någon idé??????

//mvh Björn


Svara

Sv: Dynamiskt skapade textboxar - hämta värde vid "INSERT INTO..."-sats...

Postades av 2006-02-22 11:46:59 - Joakim Sundén

Hur gör du när du postar tillbaka sidan? För att komma åt TextBox-kontrollernas ViewState måste du dynamiskt placera ut dem på nytt även vid PostBack, även om du inte tänkt visa dem på sidan. Ett annat (fulare) sätt är att använda Request["TextBoxId1"] o.s.v.


Svara

Sv:Dynamiskt skapade textboxar - hämta värde vid "INSERT INTO..."-sats...

Postades av 2006-02-27 19:08:52 - Björn Berglund

Hej Joakim,

Tack för ditt svar! Är hyfsat med på det här med ViewState och att jag måste återskapa dem igen vid Postback. Men får inte riktigt rätt på det:

Jag har följande kod (hela koden). Det fungerar förutom att det blir dubbelt så många textboxar som jag vill. Dock så när jag vill skriva infon till databasen så lagrar den rätt antal gånger. Varför blir det dubbelt så många textboxar?

<%@ Page Language="VB" Debug="true" ContentType="text/html" ResponseEncoding="iso-8859-1"%>
<!--#include file="inkluderingsfiler/globalt.inc.aspx" -->

<%@ Import Namespace="System.data" %>
<%@ Import Namespace="System.data.oledb" %>
<%@ Import Namespace="system.web.mail" %>

<script language="VB" runat="server">

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	'//Inte första gången men annars:
	If Page.IsPostBack = true
		'//hämta värdet från dropdown
		Dim antalrader As Integer = antalartiklar.selecteditem.value 'Det antal som användaren väljer i drowdown-listan
		'// när vi skapar betygsformuläret gör tidigare kontroller oaktiverade
		txtTestav.enabled = false
		antalArtiklar.enabled = false
		okej.enabled = false
		lblVad.enabled = false
		lblHur.enabled = false
		produktnamn_rubrik.visible = true
		registrera.visible = true
		Dim i as integer = 1
		for i = 1 to (antalrader)
  			Dim row As New TableRow
  			Dim cell As New TableCell
  			'Dim cell2 As New TableCell
  			'Dim label As New Label
  			'label.Text = "Produktnamn"
  			Dim txb As New TextBox
			'txb.id = "boxen" & i.ToString()
	 	
			txb.cssclass="formtext"
  			cell.Controls.Add(txb)
  			'cell2.Controls.Add(txb)
  
  			row.Cells.Add(cell)
  			'row.Cells.Add(cell2)
  			produktnamnen.Rows.Add(row)
  			'i = i + 1
			response.Write(antalrader)
		next
		
	else
		txtTestav.enabled = true
		antalArtiklar.enabled = true
		okej.enabled = true
		lblVad.enabled = true
		lblHur.enabled = true
		produktnamn_rubrik.visible = false
		registrera.visible = false
		
		'// kolla så att är inloggad, om inte redirect till logon.aspx
		Dim medlem_id as integer = Session("medlem_id")
		If medlem_id <=0 then 
			response.redirect("log_on.aspx")
		else
		end if  
   
		'************************hämta antal närvarande*************************
		Dim kvall_id=Request.QueryString("kvallens_id")
		Dim Con8 as new OLEDBConnection(db)
		Con8.open()
		Dim sql8 as string
		sql8="SELECT tblNarvarande.medlem_id FROM tblNarvarande WHERE tblNarvarande.kvall_id=" & kvall_id
		'// Hämta data från databasen med hjälp av funktionen datareader_data
		Dim Dr8 as OLEDBDatareader = datareader_data(sql8)

		con8.close()
		dr8.close()
	end if
end sub

'**************************************************************************************************************
'Hur många rader ska det vara i vår datagrid
'**************************************************************************************************************	
function antalBoxar(antalboxes as integer) as integer
	dim antalboxes2 as integer
	antalboxes2 = antalartiklar.selecteditem.value
	return antalboxes2
end function
'**************************************************************************************************************

'**************************************************************************************************************
'När användaren skrivit in vad de testat och valt antal testprodukter trycker han på Okej och då körs nedan kod.
'**************************************************************************************************************	
sub make_boxes(sender As Object, e As EventArgs)
	'********************************************************************************
	'Spara vad som testades för kvällen när användaren trycker på skapa boxar.
	'********************************************************************************	
	'// hämta hem kvallens_id från länken och lagra som en variabel
	Dim kvallens_id=Request.QueryString("kvallens_id")
	
	Dim Con4 as new OLEDBConnection(db)
	Con4.open()
	
	'// sql-sats som lägger in textboxarnas värde i en ny post i tblKvall (tillsammans med medlem_id = vem kvällen var hos)
	dim sql4 as string  = "INSERT INTO tblTest(kvall_id,testav) VALUES(" & kvallens_id & ",'" & txtTestav.text & "')"
	
	'// Command-objekt
	dim Cmd as new OLEDBCommand(sql4, Con4)
	 		
	'// Köra frågan mot databasen
	Cmd.executeNonQuery()
	
	'// Spara senast test_id i en variabel som heter NyttTestid
	Cmd.commandtext = "SELECT @@identity"
	Dim NyttTestid as string = convert.ToInt32(Cmd.ExecuteScalar())
	session("NyttTestid") = NyttTestid
	Con4.close()
	'********************************************************************************

	'// när vi skapar betygsformuläret gör tidigare kontroller oaktiverade
	txtTestav.enabled = false
	antalArtiklar.enabled = false
	okej.enabled = false
	lblVad.enabled = false
	lblHur.enabled = false
	produktnamn_rubrik.visible = true
	registrera.visible = true
	
end sub
'**************************************************************************************************************

sub reg_boxes(sender As Object, e As EventArgs)
	'********************************************************************************
	'Spara vilka produktnamn som testades när användaren trycker på Registrera-knappen.
	'********************************************************************************	
	Dim Con5 as new OLEDBConnection(db)
	Con5.open()
	
	Dim i As Integer = 1
  	Dim antalrader As Integer = antalartiklar.selecteditem.value 'Det antal som användaren väljer i drowdown-listan

	dim j as integer = 0 
	for i = 1 to (antalrader)
		dim sql5 as string  = "INSERT INTO tblTestprod(test_id,produktnamn) VALUES(" & Session("NyttTestid") & ",'" & CType(produktnamnen.Rows(j).Cells(0).Controls(0), TextBox).Text & "')"
	
		'// Command-objekt
		dim Cmd as new OLEDBCommand(sql5, Con5)
		
		'// Köra frågan mot databasen
		Cmd.executeNonQuery()
		j=j+1
	next

	Con5.close()
	'********************************************************************************

end sub

'***************************************************************************************
'Funktion för att hämta data från databasen
'***************************************************************************************
'Anropas så här:	
'				Dim Dr as OLEDBDatareader
'				Dr = datareader_data("sql-satsen här")
function datareader_data(sql as String) as OLEDBDatareader			
	'// Deklarera och öppna anslutning
	Dim Con as new OLEDBConnection(db)
	Con.open()
	'// Hämta info från databasen med hjälp av sql-satsen och anslutnings-objektet
	Dim Cmd as New OLEDBCommand(sql,Con)
	'// Skapa en datareader att lägga information i
	Dim Dr as OLEDBDatareader
	'// Knyt info från command-objekt till vår datareader
	Dr = Cmd.executeReader(Commandbehavior.closeConnection)	
	'// Returnera datareader
	return Dr
	'// stäng anslutningen
	con.close()
			'// stäng datareadern
	dr.close()
end function
'***************************************************************************************

</script>
<html>
<head>
<title><%= sidtitel %> - Lägg till grabbkväll del 5</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="/css/grabbkvall.css" rel="stylesheet" type="text/css">
</head>
<body>
<p class="headline">Lägg till grabbkväll - del 5!</p>
<form id="part5" runat="server" class="formtext">
  <table class="formtext" width="521" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td width="25" align="left" valign="top">&nbsp;</td>
      <td colspan="2" align="left" valign="top">&nbsp;</td>
    </tr>
    <tr> 
      <td width="25" height="20" align="left" valign="top">&nbsp;</td>
      <td height="20" colspan="2" align="left" valign="top"><asp:label runat="server" CssClass="formtext" id="lblVad" Text="Vad testade ni för något?" /> <br> <br> </td>
    </tr>
    <tr> 
      <td width="25" height="25" align="left" valign="top">&nbsp;</td>
      <td height="25" colspan="2" align="left" valign="top"><asp:textbox CssClass="formtext" ID="txtTestav" Columns="30" runat="server" Visible="true" />
      </td>
    </tr>
    <tr> 
      <td height="25" align="left" valign="top">&nbsp;</td>
      <td height="25" colspan="2" align="left" valign="top"> <asp:requiredfieldvalidator id="testav_tomt" autopostback="true" runat="server" Text="Fyll i vad som testades!" ControlToValidate="txtTestav" CssClass="formtext" Display="Dynamic" /> <br> <br> </td>
    </tr>
    <tr> 
      <td height="25" align="left" valign="top">&nbsp;</td>
      <td height="25" colspan="2" align="left" valign="top"><asp:label runat="server" CssClass="formtext" id="lblHur" Text="Hur många produkter testades?" /></td>
    </tr>
    <tr> 
      <td height="25" align="left" valign="top">&nbsp;</td>
      <td height="25" colspan="2" align="left" valign="top"><asp:dropdownlist ID="antalartiklar" CssClass="formtext" runat="server" AutoPostBack="false" > 
          <asp:listitem Value="0">Välj</asp:listitem>
          <asp:listitem Value="1">1</asp:listitem>
          <asp:listitem Value="2">2</asp:listitem>
          <asp:listitem Value="3">3</asp:listitem>
          <asp:listitem Value="4">4</asp:listitem>
          <asp:listitem Value="5">5</asp:listitem>
          <asp:listitem Value="6">6</asp:listitem>
          <asp:listitem Value="7">7</asp:listitem>
          <asp:listitem Value="8">8</asp:listitem>
          <asp:listitem Value="9">9</asp:listitem>
          <asp:listitem Value="10">10</asp:listitem>
        </asp:dropdownlist></td>
    </tr>
    <tr> 
      <td height="25" align="left" valign="top">&nbsp;</td>
      <td height="25" colspan="2" align="left" valign="top"><asp:requiredfieldvalidator id="Checkantalartiklar" InitialValue="0" autopostback="true" runat="server" Text="Gör ett val!" ControlToValidate="antalArtiklar" CssClass="formtext" Display="Dynamic" /></td>
    </tr>
    <tr>
      <td align="left" valign="top">&nbsp;</td>
      <td colspan="2" align="left" valign="top"><asp:button runat="server" Text="Skapa boxar" CssClass="formtext" Visible="true" id="okej" OnClick="make_boxes" /></td>
    </tr>
    <tr> 
      <td width="25" align="left" valign="top">&nbsp;</td>
      <td colspan="2" align="left" valign="top"><br>
		<asp:label runat="server" ID="produktnamn_rubrik" CssClass="formtext" Text="Produktnamn" Visible="false" /><br>
		<asp:table runat="server" ID="produktnamnen" CssClass="formtext" />
		
		</td>
    </tr>
    <tr> 
      <td width="25" align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top"><br><asp:button runat="server" Text="Registrera" CssClass="formtext" id="registrera" OnClick="reg_boxes" Visible="false" /></td>
      <td align="left" valign="top"> </td>
    </tr>
    <tr> 
      <td width="25" align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top"></td>
      <td align="left" valign="top"></td>
    </tr>
  </table>
</form>
</body>
</html>




Jättetacksam om någon kan lista ut vad som är galet!

//mvh Björn


Svara

Sv: Dynamiskt skapade textboxar - hämta värde vid "INSERT INTO..."-sats...

Postades av 2006-02-28 16:08:22 - Björn Berglund

Hej,

Det har löst sig nu. Sedan tidigare försök när jag försökte lösa detta genom en datagrid så låg detta kvar:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Ändrade till:

Private Sub Page_Load()

....nu blir det rätt!

//mvh Björn


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
809
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies