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

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

asp:editcommandcolumn in action (VB.net)

<%@ 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">
<BR><BR>
<asp:Label 
    id="lblMessage" 
    runat="server"
/>
<BR><BR>
<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>


<A href="http://www.nfex.ru/Code/ASPDownload/EmployeeDatabase.zip">EmployeeDatabase.zip( 10 k)</a>


Synchronize database operations (C#)

<%--
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>
  <table width="100%">
   <tr>
    <td>Original Data</td>
    <td>Data with new Row</td>
    <td>Data with edited Row</td>
    <td>Data with deleted Row</td>
   </tr>
   <tr>
    <td valign="top"><asp:DataGrid id="dgNameList1" runat="server" /></td>
    <td valign="top"><asp:DataGrid id="dgNameList2" runat="server" /></td>
    <td valign="top"><asp:DataGrid id="dgNameList3" runat="server" /></td>
    <td valign="top"><asp:DataGrid id="dgNameList4" runat="server" /></td>
   </tr>
  </table>
  
  <hr />
  
  Data fetched from database after the update:<br/>
  
  <asp:DataGrid id="dgUpd" runat="server"/>
  
 </body>
</html>


<A href="http://www.nfex.ru/Code/ASPDownload/EmployeeDatabase.zip">EmployeeDatabase.zip( 10 k)</a>