I have a datagridview that I need to bind to a dataset that contains data from a Access database table. The datagridview needs to allow the user to edit existing data as well as add new data. When the user is done I need to have whatever changes are made to existing data as well as the new data saved back to the database. What is the best approach to take to acomplish this?
I am able to populate the dataset and bind it to the grid. My problem is save the changes back to the database.
Pl.make necessary correcitons at your end a/c to your environment and use :
<%@ Page Language=VB Debug=true %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="MySql.Data" %>
<%@ Import Namespace="MySql.Data.Mysq
<script runat=server>
Private strConnection As String = "server=192.168.1.44; user id=bmk; password=bmkpass; database=test; pooling=false;"
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
If Not IsPostBack Then
BuildDataList()
End If
End Sub
Sub Edit_Grid(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
dgEmps.EditItemIndex = e.Item.ItemIndex
BuildDataList()
End Sub
Sub CancelEdit(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
dgEmps.EditItemIndex = -1
BuildDataList()
End Sub
Sub Update_Grid(ByVal Sender as Object, ByVal E as DataGridCommandEventArgs)
Dim TheID as String
Dim LastName as String
Dim FirstName as String
TheID = E.Item.Cells(2).Text
LastName = CType(e.Item.Cells(0).Cont
FirstName = CType(e.Item.Cells(1).Cont
Dim DBConn As MySqlConnection
Dim DBUpdate As New MySqlCommand
DBConn = New MySqlConnection(strConnect
DBUpdate.CommandText = "Update Employee " _
& "Set LastName = '" & LastName &"', " _
& "FirstName = '" & FirstName & "' " _
& "Where ID = " & TheID
DBUpdate.Connection = DBConn
DBUpdate.Connection.Open()
DBUpdate.ExecuteNonQuery()
DBConn.Close
dgEmps.EditItemIndex = -1
BuildDataList
End Sub
Sub Delete_Grid(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
dgEmps.EditItemIndex = e.Item.ItemIndex
Dim TheID As String
TheID = e.Item.Cells(2).Text
Dim DBConn As MySqlConnection
Dim DBdelete As New MySqlCommand
DBConn = New MySqlConnection(strConnect
DBdelete.CommandText = "delete from Employee " _
& "Where ID = " & TheID
DBdelete.Connection = DBConn
DBdelete.Connection.Open()
DBdelete.ExecuteNonQuery()
DBConn.Close()
dgEmps.EditItemIndex = -1
BuildDataList()
End Sub
Sub CommandAdd_Click(ByVal Sender As Object, ByVal E As CommandEventArgs)
Dim DBConn As MySqlConnection
Dim DBAdd As New MySqlCommand
DBConn = New MySqlConnection(strConnect
DBAdd.CommandText = "Insert Into Employee (LastName) " _
& "values ('')"
DBAdd.Connection = DBConn
DBAdd.Connection.Open()
DBAdd.ExecuteNonQuery()
DBConn.Close()
dgEmps.EditItemIndex = 0
BuildDataList()
End Sub
Sub BuildDataList ()
Dim DBConn As MySqlConnection
Dim DBCommand As MySqlDataAdapter
Dim DSPageData as New DataSet
DBConn = New MySqlConnection(strConnect
DBCommand = New MySqlDataAdapter _
("Select * From Employee " _
& "Order By LastName, FirstName", DBConn)
DBCommand.Fill(DSPageData,
"Employee")
dgEmps.DataSource = _
DSPageData.Tables("Employe
dgEmps.DataBind()
End Sub
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Adding Rows to a DataGrid Control</TITLE>
</HEAD>
<Body LEFTMARGIN="40">
<form runat="server">
<BR><BR>
<asp:Label
id="lblMessage"
runat="server"
/>
<BR><BR>
<asp:datagrid
id="dgEmps"
runat="server"
autogeneratecolumns="false
oneditcommand="Edit_Grid"
oncancelcommand="Canceledi
onupdatecommand="Update_Gr
ondeletecommand="Delete_Gr
>
<columns>
<asp:boundcolumn
HeaderText="Last Name"
DataField="LastName"
/>
<asp:boundcolumn
HeaderText="First Name"
DataField="FirstName"
/>
<asp:boundcolumn
datafield="ID"
visible=False
readonly=true
/>
<asp:editcommandcolumn
edittext="Edit"
updatetext="Update"
canceltext="Cancel"
itemstyle-wrap="false"
headertext="Edit"
headerStyle-wrap="false"
/>
<asp:ButtonColumn Text="Delete" CommandName="Delete"/>
</columns>
</asp:datagrid>
<BR><BR>
<asp:LinkButton
id="butAdd"
text="Add"
commandname="Add"
oncommand="CommandAdd_Clic
runat="server"
/>
</form>
</BODY>
</HTML>
Bm Keshav