ASP.Net/ADO.net Database/Edit Command Column

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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 
  
  1. Publisher: Wrox Press; 1st edition (June 2002)
  2. Language: English
  3. 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>