Solved

Inserting a checkbox value into a SQL table via ASP.NET form.

Posted on 2006-11-01
5
441 Views
Last Modified: 2008-01-09
Hello experts,

    Does anyone know of a way to store the value of a checkbox on an ASP page in a SQL table as either a true or false value? I know how to retrieve the info from SQL, but not insert it. Currently the method I am using sets the value to true regardless of what is checked on the form.

Thanks.

Here is the code I am using.

Imports System.Data.SqlClient
Imports GISTableAdapters
Imports System.Net.Mail

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        txtDateIn.Text = Today
        txtID.Text = User.Identity.Name


    End Sub

 Protected Sub ddlRush_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlRush.SelectedIndexChanged
        If ddlRush.SelectedIndex = 2 Then
            txtDateBy.Text = Today.AddDays(1)
        Else
            txtDateBy.Text = Today.AddDays(4)
        End If
    End Sub

    Protected Sub cmdSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click
        Dim NewCase As New tblRequests1TableAdapter
        Dim requestno As Integer
        Dim m As New MailMessage

        If txtDateBy.Text = "" Then
            lblErrMsg.Text = "This is a required field in the form of mm/dd/yyyy."
            lblErrMsg.Visible = True
            lblError1.Visible = True
            txtDateBy.Focus()
            Exit Sub
        Else
            lblError1.Visible = False
            lblErrMsg.Visible = False
        End If

        'Check to make sure there is a project name associated with the field less
        'than 75 characters
        If txtProjName.Text = "" Then
            lblErrMsg.Visible = True
            lblErrMsg.Text = "This is a required field."
            lblError2.Visible = True
            txtProjName.Focus()
            Exit Sub
        Else
            lblError2.Visible = False
            lblErrMsg.Visible = False
        End If

        'Check to make sure if there are hours assigned to the request
        If txtHours.Text = "" Then
            lblErrMsg.Visible = True
            lblErrMsg.Text = "You must assign hours for this request."
            txtHours.Focus()
        Else
            lblErrMsg.Visible = False
        End If

        'check to see the values of the # of copies and correct so value isnt Null
        If txtcpySite.Text = "" Then
            txtcpySite.Text = "0"
        End If

        If txtcpySoils.Text = "" Then
            txtcpySoils.Text = "0"
        End If

        If txtcpyCNDDB.Text = "" Then
            txtcpyCNDDB.Text = "0"
        End If

        If txtcpyWet.Text = "" Then
            txtcpyWet.Text = "0"
        End If

        If txtcpyPropMap.Text = "" Then
            txtcpyPropMap.Text = "0"
        End If

        If txtcpyBioConst.Text = "" Then
            txtcpyBioConst.Text = "0"
        End If

        If txtcpyBMP.Text = "" Then
            txtcpyBMP.Text = "0"
        End If

        If txtcpyFlight.Text = "" Then
            txtcpyFlight.Text = "0"
        End If

        If txtcpyHistoric.Text = "" Then
            txtcpyHistoric.Text = "0"
        End If

                requestno = Convert.ToInt32(NewCase.InsertNewRequest(txtDateIn.Text, txtDateBy.Text, _
        ddlRush.SelectedValue, ddlOffice.SelectedValue, txtProjName.Text, txtCty.Text, _
        txtDeltek.Text, txtHours.Text, ddlPM.SelectedIndex, ddlPoC.SelectedIndex, _
        ddlReqBy.SelectedIndex, txtID.Text, "New", ddlBioRes.SelectedValue.ToString, _
        ddlBioConst.SelectedValue.ToString, ddlWetlnd.SelectedValue.ToString, _
        ddlArborist.SelectedValue.ToString, ddlMonitoring.SelectedValue.ToString, _
        ddlOther.SelectedValue.ToString, ddlPCN.SelectedValue.ToString, _
        ddlPublic.SelectedValue.ToString, ddlSec7.SelectedValue.ToString, _
        ddlOnsiteAA.SelectedValue.ToString, ddlOffsiteAA.SelectedValue.ToString, _
        ddlPMP.SelectedValue.ToString, ddlCEQA.SelectedValue.ToString, _
        ddlSWPPP.SelectedValue.ToString, ddlWQC.SelectedValue.ToString, _
        ddlSAA.SelectedValue.ToString, txtcpySite.Text, txtcpySoils.Text, txtcpyCNDDB.Text, _
        txtcpyWet.Text, txtcpyPropMap.Text, txtcpyBioConst.Text, txtcpyBMP.Text, _
        txtcpyFlight.Text, txtcpyHistoric.Text, ddlprnSite.SelectedValue.ToString, _
        ddlprnSoils.SelectedValue.ToString, ddlprnCNDDB.SelectedValue.ToString, _
        ddlprnWetlnd.SelectedValue.ToString, ddlprnPropMap.SelectedValue.ToString, _
        ddlprnBioConst.SelectedValue.ToString, ddlprnBMP.SelectedValue.ToString, _
        ddlprnFlight.SelectedValue.ToString, ddlprnHistoric.SelectedValue.ToString, _
        ddltypeSite.SelectedValue.ToString, ddltypeSoils.SelectedValue.ToString, _
        ddltypeCNDDB.SelectedValue.ToString, ddltypeWetlnd.SelectedValue.ToString, _
        ddltypePropMap.SelectedValue.ToString, ddltypeBioConst.SelectedValue.ToString, _
        ddltypeBMP.SelectedValue.ToString, ddltypeFlight.SelectedValue.ToString, _
        ddltypeHistoric.SelectedValue.ToString, chkAerialField.Checked.GetType, _
        chkCAD.Checked.GetType, chkGPSBckgrnd.Checked.GetType, chkDataCD.Checked.GetType, _
        chkDigi2clnt.Checked.GetType, chkOtherfield.Checked.GetType, chkDigCad.Checked.GetType, _
        chkParcel.Checked.GetType, chkAerial.Checked.GetType, chkGPS.Checked.GetType, _
        chkOther.Checked.GetType, txtNotes.Text))        

         Label5.Text = "Request # " & requestno & " has been entered successfully. You will receive an email shortly."

        If ddlRush.SelectedIndex = 2 Then

            'Add the sender, and recepients. CC the user.
            m.From = New MailAddress("GIS@foothill.com")
            m.To.Add("jsanchez@Foothill.com")

            'Add the subject to the email so it gets by the SPAM filter.
            m.Subject = "Request # for " & txtProjName.Text & " - RUSH."
            m.Body = "The request from " & txtEmpName.Text & " is due " & txtDateBy.Text & " and is expected to take " & txtHours.Text & "."
           
             'Make sure the body of the email is HTML
            m.IsBodyHtml = True
            m.Priority = MailPriority.High

            'Send the message
            Dim smtp As New SmtpClient("192.168.254.13")
            smtp.Send(m)
            cmdSubmit.PostBackUrl = "~/Default.aspx"

        ElseIf ddlRush.SelectedIndex = 1 Then
            With m
                'Add the sender, and recepients. CC the user.
                .From = New MailAddress("GISAdmin@foothill.com")
                .To.Add("jsanchez@foothill.com")

                'Add the subject to the email so it gets by the SPAM filter.
                .Subject = "Request # has been submitted"
                .Body = "The request from " & txtEmpName.Text & " is due " & txtDateBy.Text & " and is expected to take " & txtHours.Text & "."

                'Make sure the body of the email is HTML
                .IsBodyHtml = True
                .Priority = MailPriority.Normal

                'Send the message
                Dim smtp As New SmtpClient("192.168.254.13")
                smtp.Send(m)
                cmdSubmit.PostBackUrl = "~/Default.aspx"
            End With

        End If
    End Sub

    Protected Sub ddlReqBy_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlReqBy.SelectedIndexChanged
        Dim email As New taPM
        txtReqEmail.Text = email.GetPM(ddlReqBy.SelectedIndex).pmEmail
        txtEmpName.Text = email.GetPM(ddlReqBy.SelectedIndex).pmName
    End Sub
End Class
0
Comment
Question by:sithman17
5 Comments
 
LVL 5

Accepted Solution

by:
hfpon earned 250 total points
ID: 17854894
Create a new column in your sql table (for example chk1column)
Change the data type to bit.


In your design view, add a sql datasource

                    <asp:SqlDataSource ID="InsertCheckBox" runat="server" ConnectionString="<%$ ConnectionStrings:ASPNETDBConnection %>"
                        InsertCommand="INSERT INTO [Table] ([chk1column], [othercolumn1], [othercolumn2]) VALUES (@chk1column, @othercolumn1, @othercolumn2)"
                        ProviderName="<%$ ConnectionStrings:ASPNETDBConnection.ProviderName %>">
                    </asp:SqlDataSource>

In your source view. Under your "submit" code add the following

        InsertCheckBox.InsertParameters.Add("chk1column", CheckBox1.Checked)
        InsertCheckBox.InsertParameters.Add("othercolumn1", textbox1.text)
        InsertCheckBox.InsertParameters.Add("othercolumn2", textbox2.text)
        InsertCheckBox.Insert()
0
 
LVL 16

Assisted Solution

by:Edwin_C
Edwin_C earned 250 total points
ID: 17854950
Firstly SQL Server does not have the boolean data type and so you cannot save a boolean value as true/false directly.  You can use a char(1) to store 'Y' or 'N'.  Alternatively you can use a bit or tinyint type to store 1 or 0.  This is your choice.

Suppose you use a tinyint field to store the boolean value.  Then you can do the conversion in your data access layer like this.

Public Sub AddNewRecord(name as string, isYesNo as boolean)
  Dim cmd as SqlCommand
  cmd = new SqlCommand()
  cmd.Commandtext = "INSERT ........"
  cmd.Connection = myDBConnection
  cmd.Parameters.AddWithValue("name", name)
  cmd.Parameters.AddWithValue("isYesNo", iif(isYesNo, 1, 0))
  myDBConnection.Open()
  cmd.ExecuteNonQuery()
  myDBConnection.Close()
End Sub
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have developed many web applications with asp & asp.net and to add and use a dropdownlist was always a very simple task, but with the new asp.net, setting the value is a bit tricky and its not similar to the old traditional method. So in this a…
One of the pain points with developing AJAX, JavaScript, JQuery, and other client-side behaviors is that JavaScript doesn’t allow for cross domain request for pulling content. For example, JavaScript code on www.johnchapman.name could not pull conte…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question