Updating DataGridView within Update Panel
Hello,
I'm hoping someone can help me, I've been going around in circles for days now and can't find the solution anywhere.
Upon Page Load I generate a session ID that is stored within a hidden control (label) on the form.
I have two text boxes (txtSerial and txtReturn) and a button (cmdAddSerial). When this is clicked my code goes off and inserts a row into an SQL db.
On the same form I have a datagridview (dgSerials) this is linked to a datasource (dsSerials). The idea is that as users enter serial numbers, the datagridview updates at the bottom showing them what they have done so far.
Firstly I didn't realise you could only update the whole page or nothing. Since then I have read I need to use an update panel for my datagridview. I have also put my cmdAddSerials button within the panel.
Unfortunately, it just will not update the view - I've tried coding conditional calls, letting it update always with every child control and setting up triggers - none of it works, and its driving me nuts for something that should be so simple!!
Heres my code, note that unless I put this line in: If Not Page.IsPostBack Then - generate my session id, the page always reloads and generates a new session id which means my inserted records go in against a unique session and only display one row at a time.
Heres the Page Code, any light anyone can shed would be greatly appeciated. TIA.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Call GenerateSession()
End Sub
Protected Sub GenerateSession()
If Not Page.IsPostBack Then
lblCustomerID.Text = mdlConstants.getCurrentCompany
Dim strQry As String
Dim CurrentSessionID As Integer
Dim NewSessionID As Integer
strQry = "SELECT Return_Session_ID FROM Session_ID"
Dim connStr As String = ConfigurationManager.ConnectionStrings("FUSION_AWSConnectionString").ConnectionString
'Open the connection and execute the query
Dim Conn As New SqlClient.SqlConnection(connStr)
Dim Comm As New SqlClient.SqlCommand(strQry, Conn)
Dim Dr As SqlClient.SqlDataReader
Conn.Open()
Dr = Comm.ExecuteReader()
Dr.Read()
CurrentSessionID = Dr("Return_Session_ID")
lblSessionID.Text = CurrentSessionID
Conn.Close()
Conn = Nothing
Comm = Nothing
Dr = Nothing
NewSessionID = CurrentSessionID + 1
Dim strUpd As String
strUpd = "UPDATE Session_ID SET Return_Session_ID = '" & NewSessionID & "'"
Dim ConnUpd As New SqlClient.SqlConnection(connStr)
Dim CommUpd As New SqlClient.SqlCommand(strUpd, ConnUpd)
ConnUpd.Open()
CommUpd.ExecuteNonQuery()
ConnUpd.Close()
ConnUpd = Nothing
CommUpd = Nothing
End If
End Sub
Protected Sub cmdAddSerial_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdAddSerial.Click
Dim strQry As String
strQry = "INSERT INTO CRN_Serial_Temp (Session_ID, Serial_Number, Return_Reason) VALUES(@Session, @Serial, @Reason); SELECT SCOPE_IDENTITY()"
Dim connStr As String = ConfigurationManager.ConnectionStrings("FUSION_AWSConnectionString").ConnectionString
Dim Conn As New SqlClient.SqlConnection(connStr)
Dim Comm As New SqlClient.SqlCommand(strQry, Conn)
Comm.Parameters.AddWithValue("@Session", lblSessionID.Text)
Comm.Parameters.AddWithValue("@Serial", txtSerial.Text)
Comm.Parameters.AddWithValue("@Reason", txtReason.Text)
Conn.Open()
Comm.ExecuteNonQuery()
Conn.Close()
If Page.IsPostBack Then
txtSerial.Text = ""
txtReason.Text = ""
End If
End Sub