The rowstate in my dataTable(without dataset) does not change (or gets changed back to unchange) when I want to add/delete back to the datasource. Its wierd because I am allowed to update rows. Basically, I can update the datasource but not add or delete. I dont get any errors and Im connecting to an Access DB. Thank you for any help. Here is some code.
sub filldgPubAuthors(pubID as integer)
retrives data and fills datatable
Dim objConnection as new OledbConnection(ConfigurationSettings.AppSettings("StrConnection"))
dim objCmd As New OleDbCommand()
Dim objParam As OleDbParameter
With objCmd
.Connection = objConnection
.CommandText = "[qryPubAuthorWeb]"
.CommandType = CommandType.StoredProcedure
objParam = .Parameters.Add("PublicationID", OleDbType.integer)
End With
objParam.Direction = ParameterDirection.Input
objParam.Value = pubID
Try
myAdapter = New OledbDataAdapter(objCmd)
addPrimaryKey()
myAdapter.Fill(dtPubTable)
viewState("pubTable") = dtPUbTable
dgPubAuthors.dataSource = viewState("pubTable")
dgPubAuthors.databind()
dgPubAuthors.Datasource = objDR
dgPubAuthors.DataBind()
Catch objError As Exception
labelError.Text = objError.Message
Finally
objConnection.Close()
end try
end sub
sub AddDgINfo()
adds new row to the datatable
dtPubTable = Ctype(viewState("pubTable"),Datatable)
dim TempRow as Datarow
tempRow = dtPubTable.NewRow()
tempRow("dlOrder") = txtOrder.text
tempRow("Name") = dlPersonID.selectedItem.text
tempRow("PersonID") = dlPersonId.selectedItem.value
tempRow("Pubrole") = dlRole.selectedItem.text
tempRow("PubroleID") = dlRole.selectedItEm.value
tempRow("Contribution") = txtContribution.text
dtPubTable.Rows.Add(TempRow)
response.write(temprow.RowState.ToString)
temprow.RowState = DataRowState.Added
viewState("pubTable") = dtPUbTable
end sub
sub dgData_Delete(obj as object, e as DataGridCommandEventArgs)
this deletes a row in the datatable
dim senderGrid as Datagrid = cType(obj, datagrid)
generateDataTable()
dim iId as string = Ctype(e.Item.FindControl("ID"), label).text
dim dr as datarow = dtPubtable.Rows.Find(int32.parse(iId))
dtPubTable.Rows.remove(dr)
viewState("pubTable") = dtPUbTable
dgPubAuthors.EditItemIndex = -1
dataTableBind()
end sub
sub updateChild()
updates the datasource
dtPubTable = cType(viewState("pubTable"),datatable)
dtPubTable.Columns.remove("Name")
dtPubTable.Columns.remove("PubRole")
itable = dtPubTable.getChanges()
dim strSQL as string = "SELECT tblPubAuthor.PubAuthorID, tblPubAuthor.PublicationID, tblPubAuthor.PubRoleID, tblPubAuthor.PersonID, tblPubAuthor.dlOrder, tblPubAuthor.Contribution " & _
"FROM tblPubAuthor " & _
"WHERE (((tblPubAuthor.PublicationID)=" & ViewState("hidPubID") & "));"
dim objCommand as new oledbCommand(strSQL,objConnection)
myAdapter.selectCommand = objCommand
Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(myAdapter)
myAdapter.Update(dtPubTable)
dtPubTable.AcceptChanges()
end sub
sub filldgPubAuthors(pubID as integer)
retrives data and fills datatable
Dim objConnection as new OledbConnection(ConfigurationSettings.AppSettings("StrConnection"))
dim objCmd As New OleDbCommand()
Dim objParam As OleDbParameter
With objCmd
.Connection = objConnection
.CommandText = "[qryPubAuthorWeb]"
.CommandType = CommandType.StoredProcedure
objParam = .Parameters.Add("PublicationID", OleDbType.integer)
End With
objParam.Direction = ParameterDirection.Input
objParam.Value = pubID
Try
myAdapter = New OledbDataAdapter(objCmd)
addPrimaryKey()
myAdapter.Fill(dtPubTable)
viewState("pubTable") = dtPUbTable
dgPubAuthors.dataSource = viewState("pubTable")
dgPubAuthors.databind()
dgPubAuthors.Datasource = objDR
dgPubAuthors.DataBind()
Catch objError As Exception
labelError.Text = objError.Message
Finally
objConnection.Close()
end try
end sub
sub AddDgINfo()
adds new row to the datatable
dtPubTable = Ctype(viewState("pubTable"),Datatable)
dim TempRow as Datarow
tempRow = dtPubTable.NewRow()
tempRow("dlOrder") = txtOrder.text
tempRow("Name") = dlPersonID.selectedItem.text
tempRow("PersonID") = dlPersonId.selectedItem.value
tempRow("Pubrole") = dlRole.selectedItem.text
tempRow("PubroleID") = dlRole.selectedItEm.value
tempRow("Contribution") = txtContribution.text
dtPubTable.Rows.Add(TempRow)
response.write(temprow.RowState.ToString)
temprow.RowState = DataRowState.Added
viewState("pubTable") = dtPUbTable
end sub
sub dgData_Delete(obj as object, e as DataGridCommandEventArgs)
this deletes a row in the datatable
dim senderGrid as Datagrid = cType(obj, datagrid)
generateDataTable()
dim iId as string = Ctype(e.Item.FindControl("ID"), label).text
dim dr as datarow = dtPubtable.Rows.Find(int32.parse(iId))
dtPubTable.Rows.remove(dr)
viewState("pubTable") = dtPUbTable
dgPubAuthors.EditItemIndex = -1
dataTableBind()
end sub
sub updateChild()
updates the datasource
dtPubTable = cType(viewState("pubTable"),datatable)
dtPubTable.Columns.remove("Name")
dtPubTable.Columns.remove("PubRole")
itable = dtPubTable.getChanges()
dim strSQL as string = "SELECT tblPubAuthor.PubAuthorID, tblPubAuthor.PublicationID, tblPubAuthor.PubRoleID, tblPubAuthor.PersonID, tblPubAuthor.dlOrder, tblPubAuthor.Contribution " & _
"FROM tblPubAuthor " & _
"WHERE (((tblPubAuthor.PublicationID)=" & ViewState("hidPubID") & "));"
dim objCommand as new oledbCommand(strSQL,objConnection)
myAdapter.selectCommand = objCommand
Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(myAdapter)
myAdapter.Update(dtPubTable)
dtPubTable.AcceptChanges()
end sub