webForumDet fria alternativet

autopostback

14 svar · 439 visningar · startad av andreas_lindh

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#1

Jag har ett fält där man kan välja antal spelare

jag skulle vilja skriva ut det antal textfält som användaren väljer men vet inte rikigt hur jag ska lösa det.
Någon som vet hur jag kan göra.
Använder vb.net

NETworkMedlem sedan juni 20011 732 inlägg
andreas_lindhMedlem sedan jan. 20011 140 inlägg
#3

Dett fungerar perfekt men hur ska jag göra för att hämta värdet i det skapade textfältet?

PMedlem sedan jan. 20012 204 inlägg
#4

dim apple as string
apple=Textbox1.Text

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#5

Men textboxarna heter ju namn + i som är ett tal
Har försökt med
namn"+ i +".text men det fungerar inte

PMedlem sedan jan. 20012 204 inlägg
#6

namn & "+ i +".text

kanske

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#7

gruppnamn & "+ i +".text

Detta fungerade inte

Här är koden

dim i as integer
		for i = 1 to CInt(antalgrupper.selecteditem.text)
			
			dim strsql2 as string ="insert into grupper(cup_id,namn) values (" + id1 + ",'" + namn + "')" 
			dim objcmd2 as new oledbcommand(strsql2, objconn)
			objcmd2.connection.open()
			objcmd2.executenonquery()
			objcmd2.connection.close()
		next

jag skapar textboxarna så här

sub skapa(obj as object, e as eventargs)
			Dim numtexts as Integer
			Dim i as Integer
			numtexts = CInt(antalgrupper.selecteditem.text)
			For i = 1 To numtexts
                Dim t As TextBox = New TextBox()
                t.Text = "Gruppnamn" & i
                t.ID = "Gruppnamn" & i
                Label1.Controls.Add(t)
                Label1.Controls.Add(new LiteralControl("<br />"))
            Next
        End Sub
andreas_lindhMedlem sedan jan. 20011 140 inlägg
#8

Ingen som har något exempel på hur man kan göra

renholmMedlem sedan apr. 20012 266 inlägg
#9

För att hämta värdena skulle du nog kunna använda .FindControl("Gruppnamn" & i).

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#10

Fungerade inte. Får felmedelande:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

Line 35: 		for i = 1 to CInt(antalgrupper.selecteditem.text)
Line 36: 			dim tbnamn as textbox = FindControl("Gruppnamn" & i)
Line 37: 			dim namn as string = tbnamn.text
Line 38: 			dim strsql2 as string ="insert into grupper(cup_id,namn) values (" + id1 + ",'" + namn + "')" 
Line 39: 			dim objcmd2 as new oledbcommand(strsql2, objconn)
 

Source File: h:\inetpub\wwwroot\cup\addcup.aspx    Line: 37
renholmMedlem sedan apr. 20012 266 inlägg
#11

Page.Controls.FindControls testa det, annars får du kontrollera så den inte råkar loopa en för mycket.

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#12

Nytt felmedelande.

Compiler Error Message: BC30456: 'FindControl' is not a member of 'System.Web.UI.ControlCollection'.

Source Error:

 

Line 34: 		dim i as integer
Line 35: 		for i = 1 to CInt(antalgrupper.selecteditem.text)
Line 36: 			dim tbnamn as textbox = Page.Controls.FindControl("Gruppnamn" & i)
Line 37: 			dim namn as string = tbnamn.text
Line 38: 			dim strsql2 as string ="insert into grupper(cup_id,namn) values (" + id1 + ",'" + namn + "')" 
 

Source File: h:\inetpub\wwwroot\cup\addcup.aspx    Line: 36
andreas_lindhMedlem sedan jan. 20011 140 inlägg
#13

Jag fick göra så här för att det skulle fungera

request.form("gruppnamn" & i)

Kanske inte den bästa lösningen men den fungerar

PatrikBMedlem sedan mars 20002 836 inlägg
#14

annars funkar detta här:

<%@ Page Language="VB" %>
<script runat="server">

    Private Sub Page_Load(sender As Object, e As EventArgs)
        Dim t As New TextBox()
        t.Text = "Skriv:"
        t.Id = "txt1"
    
        txt.Controls.Add(t)
    End Sub
    
    Public Sub txtBox_Click(Sender as object, e as eventargs)
        Dim _box As Control = FindControl("txt1")
        If (Not _box Is Nothing) Then
            If (TypeOf _box Is TextBox) Then
                Dim txtBox = CType(_box, TextBox)
                txtBox.Text += " : <edit>"
            End If
        End If
    End Sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <span id="txt" runat="server"></span> <asp:LinkButton id="lnkButton" runat="server" onClick="txtBox_Click">Ändra</asp:LinkButton>        
    </form>
</body>
</html>

du får principen men detta kräver lite mer jobb då det är hårdkodat inne i subben som ändrar själva värdet inne i textboxen. Detta behöver ändras till mer dynamik ;)

cya,
PatrikB

PatrikBMedlem sedan mars 20002 836 inlägg
#15

ett litet mer dynamiskt test om du ändrar mellan scriptaggarna så att det ser ut så här:

<script runat="server">

    Private Sub Page_Load(sender As Object, e As EventArgs)
        Dim n as integer
        For n = 0 to 10
            Dim t As New TextBox()
            t.Text = "Skriv:"
            t.Id = "txt" & n.tostring()
        
            txt.Controls.Add(t)
            txt.Controls.Add(New LiteralControl("<br />"))
        Next n
    End Sub
    
    Public Sub txtBox_Click(Sender as object, e as eventargs)
        Dim n as integer = 0
        
        '## -- load first control --
        Dim _box As Control = FindControl("txt0")
        
        '## -- loop while we have controls to add --
        Do While (Not _box Is Nothing)
            '## -- check if the control is of type <TextBox> --
            If (TypeOf _box Is TextBox) Then
                '## -- strongly type the control to <TextBox> --
                Dim txtBox = CType(_box, TextBox)
                
                '## -- process data in the textbox control --
                txtBox.Text += " : <edit>"
            End If
            n += 1
            '## -- load new control --
            _box = FindControl("txt" & n.tostring())
        Loop
        
    End Sub

</script>

cya,
PatrikB

134 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)