webForumDet fria alternativet

Dubbelt så många...

.NET

1 svar · 323 visningar · startad av bbquearen

Medlem sedan feb. 200630 inlägg
Frågan#1

Hej alla smarta,

Se min bifogade bild på hur det ser ut i nuläget. Det börjar se bra ut, dock så får jag dubbelt så många headerceller och textboxar som jag vill ha. Bilden visar det. Någon som vet hur jag kan få rätt antal av mina kontroller? Är det någon med att page_load körs två gånger eller något...?

Tacksam för hjälp jag kan få. Och ursäkta den stora textmassan!

//mvh Björn

<%@ 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
		'// Lägg värdet från querystring-variabeln i en ny variabel
		Dim kvall_id = Request.QueryString("kvallens_id")
		'// Om inget kvall_id är tillgängligt gå till nights_start.aspx
		if kvall_id="" then response.redirect("log_on.aspx")
		'// Nytt = hämta in De närvarande
		Dim sql_present as string
		sql_present="SELECT tblNarvarande.*, tblMedlem.anvnamn FROM tblNarvarande, tblMedlem WHERE tblNarvarande.medlem_id = tblMedlem.medlem_id AND tblNarvarande.kvall_id=" & kvall_id
	
		'// deklarera dr som ett OLEDBDatareader-objekt. Anropar funktionen datareader_data med 
		'// sql-satsen, funktionen returnerar just ett OLEDBDatareader-objekt.
		Dim Dr_present as OLEDBDatareader = datareader_data(sql_present)
		
		'//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
		rubrik.visible = true
		registrera.visible = true
		
		Dim i as integer = 1
		Dim headerRow as New TableRow()
		Dim header1 As New TableHeaderCell()
		header1.text = "Produktnamn"
		header1.HorizontalAlign = HorizontalAlign.Left
		headerRow.Cells.Add(header1)
		While Dr_present.read()
			Dim k as integer = 0
			Dim header2 As New TableHeaderCell()
			header2.text = Dr_present("anvnamn")
			header2.HorizontalAlign = HorizontalAlign.Left
			headerRow.Cells.Add(header2)
			produktnamnen.Rows.AddAt(k, headerRow)
			k = k+1
		end while
		Dr_present.close()
		for i = 1 to (antalrader)
			'// Nytt = hämta in De närvarande
			Dim sql_present2 as string
			sql_present2="SELECT tblNarvarande.*, tblMedlem.anvnamn FROM tblNarvarande, tblMedlem WHERE tblNarvarande.medlem_id = tblMedlem.medlem_id AND tblNarvarande.kvall_id=" & kvall_id
	
			'// deklarera dr som ett OLEDBDatareader-objekt. Anropar funktionen datareader_data med 
			'// sql-satsen, funktionen returnerar just ett OLEDBDatareader-objekt.
			Dim Dr_present2 as OLEDBDatareader = datareader_data(sql_present2)
			
			Dim row As New TableRow
			While Dr_present2.read()
  				Dim cell As New TableCell
  				Dim txb As New TextBox
				txb.cssclass="formtext"
  				cell.Controls.Add(txb)			
				row.Cells.Add(cell)
			end while
			
			'// För att få den extra som behövs
			Dim cell2 as New TableCell
			Dim txc as New Textbox
			txc.cssclass="formtext"
			cell2.Controls.Add(txc)
			row.Cells.Add(cell2)
			'/////////////////////////////////
			produktnamnen.Rows.Add(row)
			Dr_present2.close()
		next
		
		
		
	else
		txtTestav.enabled = true
		antalArtiklar.enabled = true
		okej.enabled = true
		lblVad.enabled = true
		lblHur.enabled = true
		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
	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>
lookslikethis.jpg
Medlem sedan feb. 200630 inlägg
#2

Ingen?

//mvh Björn

469 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
296 ms — deklarationer (db)
0 ms — hämta statistik (cache)
168 ms — hämta tråd, inlägg och bilagor (db)
298 ms — ändringar (db)