none
Bagaimana menyimpan data ke database dari Textbox Array. RRS feed

  • Pertanyaan

  • Teman-teman, mohon bantuannya.

    Saya membuat Textbox dinamis pada Web Form. menggunakan coding dibawah ini:

       Dim cnn As New MySqlConnection
        Dim cmd As New MySqlCommand
        Dim DA As New MySqlDataAdapter
        Dim ds As New DataSet
    
         Sub Page_Init(sender As Object, e As EventArgs)
            CreateDynamicTable()
            cnn = New MySqlConnection("server=localhost; user id=root; password=pass; database=dbstindo;pooling=false;")
        End Sub
    
    Private Sub CreateDynamicTable()
            
            ' Fetch the number of Rows and Columns for the table
            ' using the properties
            Dim tblRows As Integer = Session("JumlahTextbox")
            ' Dim tblCols As Integer =2
            ' Now iterate through the table and add your controls
            For i As Integer = 1 To tblRows + (1 - 1)
                Dim tr As New TableRow()
                ' For j As Integer = 0 To tblCols - 1
                Dim tc As New TableCell()
                Dim lblDws As New Label
                Dim txtBox As New TextBox
                lblDws.Text = "Nama Pax. " & i
                txtBox.ID = "txt-" & i.ToString() & "-"
    
                ' Add the control to the TableCell
                tc.Controls.Add(lblDws)
                tc.Controls.Add(txtBox)
                ' Add the TableCell to the TableRow
                
                tr.Cells.Add(tc)
                '  Next
                ' Add the TableRow to the Table
                tbl.Rows.Add(tr)
                tbl.EnableViewState = True
                ViewState("tbl") = True
            Next
        End Sub

    Saya ingin menyimpan isi/ value dari Textbox-textbox yang ada ke database.

    saya menggunakan coding seperti dibawah ini. tapi Error disini. Errornya pada variabel txtBox.Text (is not declare)

     Protected Sub btnSave_Click(sender As Object, e As System.EventArgs)
         
            Try
                cmd.CommandText = "insert into tbdetailpax values('" & txtBox.Text & "')"
                cmd.CommandType = CommandType.Text
                cmd.Connection = cnn
                If cmd.Connection.State = ConnectionState.Closed Then
                    cmd.Connection.Open()
                End If
                cmd.ExecuteNonQuery()
            Catch ex As MySqlException
                Response.Write(ex.Message)
            End Try
            
        End Sub

    harapan saya, teman-teman yang telah berpengalaman, kiranya bisa mengkoreksi coding diatas.

    Terima kasih sebelumnya.



    • Diedit oleh Frangky_Koe Selasa, 29 Januari 2013 15.25
    Selasa, 29 Januari 2013 15.24

Semua Balasan

  • Pertama, nama control tidak boleh menggunakan tanda minus (-)

    Ganti baris berikut

    txtBox.ID = "txt-" & i.ToString() & "-"

    dengan

    txtBox.ID = "txt_" & i.ToString() & "_"

    Pada method btnSave_Click, txtBox tidak dideklarasikan. Untuk mendapatkan instance TextBox, gunakan method FindControl

    Contoh kode berikut (maaf menggunakan C#)

    
    int i = 0;
    foreach (TableRow row in tbl.Rows)
    {
        i++;
        forearc(TableCell cell in row.Cells)
        {
            var textBox = cell.FindControl("txt_" + i.ToString() + "_");
            if (textBox != null) {
                var textBoxText = textBox.Text;
                // masukkan text ke database di sini
            }
        }
    }
    

    Untuk memasukkan data ke database sebaiknya tidak menggunakan string concatenation (menyambung string ke query), karena bisa menimbulkan celah keamanan SQL Injection. Lebih baik gunakan SQL parameter, silakan baca tutorial berikut

    http://www.4guysfromrolla.com/webtech/092601-1.shtml

    http://www.4guysfromrolla.com/webtech/092601-1.2.shtml


    Ahmad Masykur http://www.masykur.web.id/

    Rabu, 30 Januari 2013 00.45
  • Mas Ahmad, Terima kasih telah merespon pertanyaan saya.

    Coding yang Mas berikan, saya mengubah ke VB.Net seperti ini:

    Protected Sub btnSave_Click(sender As Object, e As System.EventArgs)
            Dim i As Integer = 0
            For Each row As TableRow In tbl.Rows
                i += 1
                For Each cell As TableCell In row.Cells
                    Dim textBox = cell.FindControl("txt_" & i.ToString() & "_")
                    If textBox IsNot Nothing Then
                        Dim textBoxText = textBox.Text
                        ' masukkan text ke database di sini
                    End If
                Next
            Next
        End Sub
    
    Pada syntax
    Dim textBoxText = textBox.Text
    ada garis bawah warna biru yang dizig-zag pada tulisan textbox.Text

    waktu saya arahkan Mouse ke syntax ini, muncul keterangan 'Text' is not member of 'System.Web.UI.Control'.

    Mohon solusinya Mas.

    Terima kasih.

    Rabu, 30 Januari 2013 03.03
  • Dim i As Integer = 0 For Each row As TableRow In tbl.Rows i += 1 For Each txtbox As TableCell In row.Cells Dim textBox As TextBox = txtbox.FindControl("txt_" & i.ToString()) If textBox IsNot Nothing Then Dim textBoxText = textBox ' masukkan text ke database di sini MsgBox("" & textBoxText.text) End If Next Next


    Mas Ahmad, masalah ini sudah selesai.

    Saya coding seperti diatas.

    Terima kasih Mas Ahmad. untuk bantuannya.




    Rabu, 30 Januari 2013 03.20
  • Maaf ada sedikit kekurangan.

    Anda harus casting terlebih dahulu object tersebut ke TextBox

    Dim textBoxText = CType(textBox, TextBox).Text

    

    Ahmad Masykur http://www.masykur.web.id/

    Rabu, 30 Januari 2013 03.23
  • Terima kasih Mas Ahmad.
    Rabu, 30 Januari 2013 05.11