Saving Back
Hi
I need help in Saving multiple records on single click of button from datagridview to dataset and then to database. I am using VB.Net, SQL Server 2000 -- i am not using in line quries only store procedures.
Sample Code which is not working properly is
Option
ExplicitOnImports
System.DataImports
System.Data.SqlClientPublic
Class Form1Inherits System.Windows.Forms.FormPublicConst ConnectionStringAsString = _"Integrated Security=sspi;Initial Catalog=pubs;Data Source=Shahji;"ProtectedConst GetAllAuthorsSqlStringAsString ="Select au_id, au_lname, au_fname, phone, address, city,state, zip, contract from authors order by au_lname, au_fname"PrivateSub Form1_Load(ByVal senderAs System.Object,ByVal eAs System.EventArgs)HandlesMyBase.LoadRefreshData()
EndSubPrivateSub mnuRefresh_Click(ByVal senderAs System.Object,ByVal eAs System.EventArgs)Handles mnuRefresh.ClickRefreshData()
EndSubPublicSub RefreshData()Dim connectionAsNew SqlConnection(ConnectionString)connection.Open()
Dim adapterAsNew SqlDataAdapter(GetAllAuthorsSqlString, connection)Dim datasetAsNew DataSetadapter.Fill(dataset)
adapter.Dispose()
connection.Close()
Dim tableAs DataTable = dataset.Tables(0)AddHandler table.ColumnChanged,New DataColumnChangeEventHandler(AddressOf ColumnChanged)datagridAuthors.DataSource = table
EndSubProtectedSub ColumnChanged(ByVal senderAsObject,ByVal eAs DataColumnChangeEventArgs)mnuSaveChanges.Enabled =
TrueEndSubPrivateSub mnuSaveChanges_Click(ByVal senderAs System.Object,ByVal eAs System.EventArgs)Handles mnuSaveChanges.ClickSaveChanges()
EndSubPublicSub SaveChanges()Dim TableAs DataTable =CType(datagridAuthors.DataSource, DataTable)Dim ChangedRowsAsNew ArrayListDim rowAs DataRowForEach rowIn Table.RowsIf row.RowState <> DataRowState.UnchangedThenChangedRows.Add(row)
EndIfDim connectionAsNew SqlConnection(ConnectionString)connection.Open()
Dim adapterAsNew SqlDataAdapter(GetAllAuthorsSqlString, connection)Dim builderAsNew SqlCommandBuilder(adapter)Dim rows()As DataRow =CType(ChangedRows.ToArray(GetType(DataRow)), DataRow())adapter.Update(rows)
adapter.Dispose()
connection.Close()
mnuSaveChanges.Enabled =
FalseNextIf ChangedRows.Count = 0ThenReturnEndIfEndSubEnd
ClassPlease Help.
Regards
Mirza Ashraf

