none
Insertar numeracion en textbox dinamicos? RRS feed

  • Pregunta

  • Tengo 5 filas de textboxs estaticos donde esta enumerados del 1 al 5...

    pero no puedo enumerar los otros textboxs que son los dinamicos .... cual seria la mejor forma de enumerarlos cada vez que se crean los textboxs dinamicos

    miércoles, 4 de marzo de 2015 18:23

Respuestas

  • hola

    si usas un Repeater y las filas de controles las creas mediane un template podrias poner ese secuencial como parte de los datos

    o se ano uses esto

    Dim dataSource As New List(Of Integer)()

    sino defines

    Public Class RowData
    
    	Public Property Index() As Integer
    		Get
    			Return m_Index
    		End Get
    		Set
    			m_Index = Value
    		End Set
    	End Property
    	Private m_Index As Integer
    
    End Class


    entonces cuando vas agregando items usarias

    Dim dataSource As New List(Of RowData())

    //resto codigo

    dataSource.Add(New RowData() With { _ Key .Index = i _ })


    con esto podrias usar esa propiedad dentro del template del Repeater para poner el numero secuancial

    pondrias un label en el template como ser

    <asp:Label ... Value="<%# Index %>" />

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta fredsale miércoles, 4 de marzo de 2015 22:39
    miércoles, 4 de marzo de 2015 19:41
  • Lo solucione asi chicos...

    sufri un poco pero logre la solucion... lo dejo para que todos puedan verlo

    Dim i as integer

      Dim dataSource As New List(Of RowData)

            For i As Integer = 1 To DropDownList1.SelectedValue - 1
                'Create object of RowData class
                Dim objrowdata = New RowData()
                'assign i value to Index
                objrowdata.Index = i
                dataSource.Add(objrowdata)
            Next

            dataSource.Add(New RowData() With {.Index = i})

            Me.rpt.DataSource = dataSource
            Me.rpt.DataBind()

    • Marcado como respuesta fredsale miércoles, 4 de marzo de 2015 22:39
    miércoles, 4 de marzo de 2015 22:39

Todas las respuestas

  • Pues para darle una respuesta 100% exacta necesitaría saber si el botón Create agrega la cantidad seleccionada a las ya existentes filas, o si el botón Create nada más se encarga de asegurarse que hayan esa cantidad de filas.

    Jose R. MCP
    Code Samples

    miércoles, 4 de marzo de 2015 18:34
    Moderador
  • lo que hace el botón create es crear filas de textbox dentro de un repeater según la cantidad seleccionada en el ddl...

    aquí les muestro el codigo

       Protected Sub btnCreate_Click(sender As Object, e As EventArgs) Handles btnCreate.Click
            Dim numberOfTextboxes As Integer = Integer.Parse(DropDownList1.SelectedValue)
            Dim dataSource As New List(Of Integer)()
            For i As Integer = 0 To numberOfTextboxes - 1
                dataSource.Add(i)
            Next

            Me.rpt.DataSource = dataSource
            Me.rpt.DataBind()
        End Sub

    #Region "AUTOGENERAR CODIGO DE SOLICITUD"
        Public Function generarCodigo()
            Dim codigo As String = ""
            Dim total As Integer = 0
            Dim annomes As String
            annomes = Date.Now.ToString("yyyyMM")
            Try
                cmd = New SqlCommand("Select count(*)+1 as totalRegistros from OPP.tblDetalleFichaProgra", con)
                con.Open()
                dr = cmd.ExecuteReader
                If dr.Read Then
                    total = CInt(dr.Item("totalRegistros"))
                End If
                dr.Close()

                If total < 10 Then
                    codigo = total.ToString
                ElseIf total < 100 Then
                    codigo = total.ToString
                ElseIf total < 1000 Then
                    codigo = total.ToString
                End If
                con.Close()
            Catch ex As Exception
                MsgBox("Error al generar el codigo: " + ex.ToString)

            End Try
            Return codigo
        End Function
    #End Region

        Protected Sub Guardar_Click(sender As Object, e As EventArgs) Handles Guardar.Click
            If Not String.IsNullOrEmpty(estatico1.Text) Then
                auto.Text = generarCodigo()
                Dim con11 As New SqlConnection(conString)
                con11.Open()
                Dim cmd11 As New SqlCommand("insert into [OPP].[tblDetalleFichaProgra](idPracti,numeActi,fechaIniActi) values(@nombre,@actividad,@fecha)", con11)
                cmd11.Parameters.AddWithValue("@nombre", estatico1.Text)
                cmd11.Parameters.AddWithValue("@actividad", auto.Text)
                cmd11.Parameters.AddWithValue("@fecha", estatico3.Text)
                'CalendarControl1.Value.ToString("yyyy/MM/dd")

                cmd11.ExecuteNonQuery()

                con11.Close()

            End If


            For Each item As RepeaterItem In rpt.Items
                auto.Text = generarCodigo()
                Dim Qbox As TextBox = TryCast(item.FindControl("txt"), TextBox)
                Dim Ansbox As TextBox = TryCast(item.FindControl("txt1"), TextBox)
                Dim fecha As TextBox = TryCast(item.FindControl("Textbox1"), TextBox)
                Dim Question As String = Qbox.Text
                Dim Answer As String = Ansbox.Text
                Dim fecha1 As String = fecha.Text
                'Perform your insert operation.
                '    If Not String.IsNullOrEmpty(Answer) Then
                Dim con As New SqlConnection(conString)
                con.Open()
                Dim cmd As New SqlCommand("insert into [OPP].[tblDetalleFichaProgra](idPracti,numeActi,fechaIniActi) values(@nombre,@actividad,@fecha)", con)
                cmd.Parameters.AddWithValue("@nombre", Question)
                cmd.Parameters.AddWithValue("@actividad", auto.Text)
                cmd.Parameters.AddWithValue("@fecha", fecha1)
        
                cmd.ExecuteNonQuery()

                con.Close()

                '   End If
            Next

        End Sub

    miércoles, 4 de marzo de 2015 19:22
  • hola

    si usas un Repeater y las filas de controles las creas mediane un template podrias poner ese secuencial como parte de los datos

    o se ano uses esto

    Dim dataSource As New List(Of Integer)()

    sino defines

    Public Class RowData
    
    	Public Property Index() As Integer
    		Get
    			Return m_Index
    		End Get
    		Set
    			m_Index = Value
    		End Set
    	End Property
    	Private m_Index As Integer
    
    End Class


    entonces cuando vas agregando items usarias

    Dim dataSource As New List(Of RowData())

    //resto codigo

    dataSource.Add(New RowData() With { _ Key .Index = i _ })


    con esto podrias usar esa propiedad dentro del template del Repeater para poner el numero secuancial

    pondrias un label en el template como ser

    <asp:Label ... Value="<%# Index %>" />

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta fredsale miércoles, 4 de marzo de 2015 22:39
    miércoles, 4 de marzo de 2015 19:41
  • Leandro cambie mi código a tu sugerencia pero me sale este error :

    • Editado fredsale miércoles, 4 de marzo de 2015 20:47
    miércoles, 4 de marzo de 2015 20:47
  • Lo solucione asi chicos...

    sufri un poco pero logre la solucion... lo dejo para que todos puedan verlo

    Dim i as integer

      Dim dataSource As New List(Of RowData)

            For i As Integer = 1 To DropDownList1.SelectedValue - 1
                'Create object of RowData class
                Dim objrowdata = New RowData()
                'assign i value to Index
                objrowdata.Index = i
                dataSource.Add(objrowdata)
            Next

            dataSource.Add(New RowData() With {.Index = i})

            Me.rpt.DataSource = dataSource
            Me.rpt.DataBind()

    • Marcado como respuesta fredsale miércoles, 4 de marzo de 2015 22:39
    miércoles, 4 de marzo de 2015 22:39