ASP.Net/ADO.net Database/Edit Command Column
asp:editcommandcolumn in action (VB.net)
<source lang="csharp">
<%@ Page Language=VB Debug=true %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OLEDB" %> <script runat=server> Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
If Not IsPostBack Then BuildDataList End If
End Sub Sub Edit_Grid(sender As Object, e As DataGridCommandEventArgs)
dgEmps.EditItemIndex = e.Item.ItemIndex 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).Controls(0), TextBox).Text FirstName = CType(e.Item.Cells(1).Controls(0), TextBox).Text Dim DBConn as OleDbConnection Dim DBUpdate As New OleDbCommand DBConn = New OleDbConnection( _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _ & "DATA SOURCE=" _ & Server.MapPath("EmployeeDatabase.mdb;")) DBUpdate.rumandText = "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 BuildDataList ()
Dim DBConn as OleDbConnection Dim DBCommand As OleDbDataAdapter Dim DSPageData as New DataSet DBConn = New OleDbConnection( _ "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _ & "DATA SOURCE=" _ & Server.MapPath("EmployeeDatabase.mdb;")) DBCommand = New OleDbDataAdapter _ ("Select * From Employee " _ & "Order By LastName, FirstName", DBConn) DBCommand.Fill(DSPageData, _ "Employee") dgEmps.DataSource = _ DSPageData.Tables("Employee").DefaultView dgEmps.DataBind()
End Sub
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Editing Rows from a DataGrid Control</TITLE>
</HEAD>
<Body LEFTMARGIN="40">
<form runat="server">
<asp:Label
id="lblMessage" runat="server"
/>
<asp:datagrid
id="dgEmps" runat="server" autogeneratecolumns="false" oneditcommand="Edit_Grid" onupdatecommand="Update_Grid" > <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" itemstyle-wrap="false" headertext="Edit" headerStyle-wrap="false" /> </columns>
</asp:datagrid> </form> </BODY> </HTML>
</source>
<A href="http://www.nfex.ru/Code/ASPDownload/EmployeeDatabase.zip">EmployeeDatabase.zip( 10 k)</a>
Synchronize database operations (C#)
<source lang="csharp">
<%-- Beginning ASP.NET 1.0 with C# (Paperback) by David Sussman, Chris Ullman,
Juan T. Llibre, John Kauffman, Ollie Cornes, Ajoy Krishnamoorthy, Srinivasa Sivakumar, Chris Goode, Neil Raybould, Christopher Miller, Rob Birdwell, Matt Butler, Gary Johnson
- Publisher: Wrox Press; 1st edition (June 2002)
- Language: English
- ISBN: 1861007345
--%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs) Dim strConnection As String Dim strSQL As String Dim objDataSet As New DataSet() Dim objConnection As OleDbConnection Dim objAdapter As OleDbDataAdapter strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source="+MapPath("EmployeeDatabase.mdb") strSQL = "SELECT ID, FirstName, LastName FROM Employee;" objConnection = New OledbConnection(strConnection) objAdapter = New OledbDataAdapter(strSQL, objConnection) objAdapter.Fill(objDataSet, "Employees") dgNameList1.DataSource = objDataSet.Tables("Employees").DefaultView dgNameList1.DataBind()
" -----------------------------------------------------------------
Dim objTable As DataTable Dim objNewRow As DataRow objTable = objDataSet.Tables("Employees") objNewRow = objTable.NewRow() objNewRow("FirstName") = "Norman" objNewRow("LastName") = "Blake" objTable.Rows.Add(objNewRow)
" add another new row. We"ll be deleting the one above later. " we can"t delete existing rows from the database because of " referential integrity (every employee also has Orders) objNewRow = objTable.NewRow() objNewRow("FirstName") = "Kasey" objNewRow("LastName") = "Chambers" objTable.Rows.Add(objNewRow)
" bind the data grid to the new data dgNameList2.DataSource = objTable.DefaultView dgNameList2.DataBind()
" ----------------------------------------------------------------- " edit an existing row in the table Dim objRow As DataRow " The Rows collection is 0 indexed, so this changes the fourth row objRow = objTable.Rows(3) objRow("FirstName") = "John" objRow("LastName") = "Hartford" " bind the data grid to the new data dgNameList3.DataSource = objTable.DefaultView dgNameList3.DataBind()
" ----------------------------------------------------------------- " delete a row from the table " The Rows collection is 0 indexed, so this removes the sixth row objTable.Rows(objTable.Rows.Count - 2).Delete() " bind the data grid to the new data dgNameList4.DataSource = objTable.DefaultView dgNameList4.DataBind()
" ================================================================= " generate the update commands Dim objBuilder As OleDbCommandBuilder objBuilder = New OleDbCommandBuilder(objAdapter) objAdapter.UpdateCommand = objBuilder.GetUpdateCommand() objAdapter.InsertCommand = objBuilder.GetInsertCommand() objAdapter.DeleteCommand = objBuilder.GetDeleteCommand()
" ================================================================= " update the data store objAdapter.Update(objDataSet, "Employees") " ================================================================= " refresh the data in the DataReader and bind it to a new grid " to prove that the data store has been updated strSQL = "SELECT ID, FirstName, LastName FROM Employee" objConnection.Open() Dim objCmd As New OleDbCommand(strSQL, objConnection) dgUpd.DataSource = objCmd.ExecuteReader(CommandBehavior.CloseConnection) dgUpd.DataBind() End Sub
</script> <html>
<body>
Original Data | Data with new Row | Data with edited Row | Data with deleted Row |
<asp:DataGrid id="dgNameList1" runat="server" /> | <asp:DataGrid id="dgNameList2" runat="server" /> | <asp:DataGrid id="dgNameList3" runat="server" /> | <asp:DataGrid id="dgNameList4" runat="server" /> |
Data fetched from database after the update:
<asp:DataGrid id="dgUpd" runat="server"/> </body>
</html>
</source>
<A href="http://www.nfex.ru/Code/ASPDownload/EmployeeDatabase.zip">EmployeeDatabase.zip( 10 k)</a>