ASP.Net/ADO.net Database/DataGrid Edit

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

Add asp:textbox to asp:datagrid edit mode

<%@ 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 DataList_Edit(sender As Object, e As DataListCommandEventArgs)
    dlDepts.EditItemIndex = CInt(e.Item.ItemIndex)
    BuildDataList
End Sub
Sub DataList_Update(sender As Object, e As DataListCommandEventArgs)
    Dim TheID as String
    Dim TheFirstName as String
    Dim TheLastName as String
    TheID = CType(e.Item.FindControl("lblID"), Label).Text
    TheFirstName = CType(e.Item.FindControl("txtName"), TextBox).Text
    TheLastName = CType(e.Item.FindControl("txtEmail"), 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 " _
        & "FirstName = "" & Replace(TheFirstName, """, """") & "", " _
        & "LastName = "" & Replace(TheLastName, """, """") & "" " _
        & "Where ID = " & TheID
    DBUpdate.Connection = DBConn
    DBUpdate.Connection.Open
    DBUpdate.ExecuteNonQuery()
    DBConn.Close
    dlDepts.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 ID, FirstName, LastName " _
            & "From Employee " _
            & "Order By FirstName", DBConn)
        DBCommand.Fill(DSPageData, _
            "Employee")
        dlDepts.DataSource = _
            DSPageData.Tables("Employee").DefaultView
        dlDepts.DataBind()   
End Sub
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Editing Rows from a DataList Control</TITLE>
</HEAD>
<Body LEFTMARGIN="40">
<form runat="server">
<BR><BR>
<asp:Label 
    id="lblMessage" 
    Font-Size="12pt"
    Font-Bold="True"
    Font-Name="Lucida Console"
    text="Below is a list of all the employee"
    runat="server"
/>
<BR><BR>
<asp:datalist 
    id="dlDepts" 
    runat="server" 
    oneditcommand="DataList_Edit"
    onupdatecommand="DataList_Update"
    gridlines="Both"
    backcolor="lightyellow"
    forecolor="darkred"
>
    <itemtemplate>
        <B>Department: </B>
        <asp:label
            id="lblID"
            runat="server"
            text="<%# DataBinder.Eval(Container.DataItem, "ID") %>"
            visible="False"
        />
        <%# DataBinder.Eval(Container.DataItem, "FirstName") _
            & " - " _
            & DataBinder.Eval(Container.DataItem, "LastName") 
         %>
         <asp:LinkButton 
             id="butEdit" 
              Text="Edit" 
              CommandName="Edit"
              runat="server"
          />
    </itemtemplate>
    <edititemtemplate>
        <asp:label
            id="lblID"
            runat="server"
            text="<%# DataBinder.Eval(Container.DataItem, "ID") %>"
            visible="False"
        />
        Name:
        <asp:textbox 
            id="txtName" 
            text="<%# DataBinder.Eval(Container.DataItem, "FirstName") %>"
            runat="server"
        />
        <BR>        
        Email:
        <asp:textbox 
            id="txtEmail" 
            text="<%# DataBinder.Eval(Container.DataItem, "LastName") %>"
            runat="server"
        />
        <BR>      
         <asp:LinkButton 
             id="butUpdate" 
              Text="Update" 
              CommandName="Update"
              runat="server"
          />
    </edititemtemplate>          
</asp:datalist>
</form>
</BODY>
</HTML>


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


asp:DataGrid with data edit

<%@ 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=C:\Northwind.mdb"
    strSQL = "SELECT FirstName, LastName FROM Employees;"
    objConnection = New OledbConnection(strConnection)
    objAdapter = New OledbDataAdapter(strSQL, objConnection)
    objAdapter.Fill(objDataSet, "Employees")
    dgNameList1.DataSource = objDataSet.Tables("Employees").DefaultView
    dgNameList1.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>
 </body>
</html>



Edit data in asp:datagrid

<%@ 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 CommandAdd_Click(Sender As Object, E As CommandEventArgs)
    Dim DBConn as OleDbConnection
    Dim DBAdd As New OleDbCommand
    DBConn = New OleDbConnection( _
        "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _
        & "DATA SOURCE=" _
        & Server.MapPath("EmployeeDatabase.mdb;"))
    DBAdd.rumandText = "Insert Into Employee (LastName) " _
        & "values ("new LastName")"
    DBAdd.Connection = DBConn
    DBAdd.Connection.Open
    DBAdd.ExecuteNonQuery()
    DBConn.Close
    dgEmps.EditItemIndex = 0
    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>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"
    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>
<BR><BR>
<asp:LinkButton 
    id="butAdd" 
    text="Add" 
    commandname="Add"
    oncommand="CommandAdd_Click"
    runat="server"
/>
</form>
</BODY>
</HTML>


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


Use asp:datagrid to add, update

<%@ 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 DataList_Edit(sender As Object, e As DataListCommandEventArgs)
    dlDepts.EditItemIndex = CInt(e.Item.ItemIndex)
    BuildDataList
End Sub
Sub DataList_Update(sender As Object, e As DataListCommandEventArgs)
    Dim TheID as String
    Dim TheName as String
    Dim TheEmail as String
    TheID = CType(e.Item.FindControl("lblID"), Label).Text
    TheName = CType(e.Item.FindControl("txtName"), TextBox).Text
    TheEmail = CType(e.Item.FindControl("txtEmail"), 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 " _
        & "FirstName = "" & Replace(TheName, """, """") & "", " _
        & "LastName = "" & Replace(TheEmail, """, """") & "" " _
        & "Where ID = " & TheID
    DBUpdate.Connection = DBConn
    DBUpdate.Connection.Open
    DBUpdate.ExecuteNonQuery()
    DBConn.Close
    dlDepts.EditItemIndex = -1
    BuildDataList
End Sub
Sub CommandAdd_Click(Sender As Object, E As CommandEventArgs)
    Dim DBConn as OleDbConnection
    Dim DBAdd As New OleDbCommand
    DBConn = New OleDbConnection( _
        "PROVIDER=Microsoft.Jet.OLEDB.4.0;" _
        & "DATA SOURCE=" _
        & Server.MapPath("EmployeeDatabase.mdb;"))
    DBAdd.rumandText = "Insert Into Employee (FirstName) " _
        & "values ("NewFirstName ")"
    DBAdd.Connection = DBConn
    DBAdd.Connection.Open
    DBAdd.ExecuteNonQuery()
    DBConn.Close
    dlDepts.EditItemIndex = 0
    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 ID, FirstName, LastName " _
            & "From Employee " _
            & "Order By LastName", DBConn)
        DBCommand.Fill(DSPageData, _
            "Employee")
        dlDepts.DataSource = _
            DSPageData.Tables("Employee").DefaultView
        dlDepts.DataBind()   
End Sub
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Adding Rows from a DataList Control</TITLE>
</HEAD>
<Body LEFTMARGIN="40">
<form runat="server">
<BR><BR>
<asp:Label 
    id="lblMessage" 
    Font-Size="12pt"
    Font-Bold="True"
    Font-Name="Lucida Console"
    text="Below is a list of all employees"
    runat="server"
/>
<BR><BR>
<asp:datalist 
    id="dlDepts" 
    runat="server" 
    oneditcommand="DataList_Edit"
    onupdatecommand="DataList_Update"
    gridlines="Both"
    backcolor="lightyellow"
    forecolor="darkred"
>
    <itemtemplate>
        <B>Department: </B>
        <asp:label
            id="lblID"
            runat="server"
            text="<%# DataBinder.Eval(Container.DataItem, "ID") %>"
            visible="False"
        />
        <%# DataBinder.Eval(Container.DataItem, "FirstName") _
            & " - " _
            & DataBinder.Eval(Container.DataItem, "LastName") 
         %>
         <asp:LinkButton 
             id="butEdit" 
              Text="Edit" 
              CommandName="Edit"
              runat="server"
          />
    </itemtemplate>
    <edititemtemplate>
        <asp:label
            id="lblID"
            runat="server"
            text="<%# DataBinder.Eval(Container.DataItem, "ID") %>"
            visible="False"
        />
        Name:
        <asp:textbox 
            id="txtName" 
            text="<%# DataBinder.Eval(Container.DataItem, "FirstName") %>"
            runat="server"
        />
        <BR>        
        Email:
        <asp:textbox 
            id="txtEmail" 
            text="<%# DataBinder.Eval(Container.DataItem, "LastName") %>"
            runat="server"
        />
        <BR>      
         <asp:LinkButton 
             id="butUpdate" 
              Text="Update" 
              CommandName="Update"
              runat="server"
          />
    </edititemtemplate>          
</asp:datalist>
<BR><BR>
<asp:LinkButton 
    id="butAdd" 
    text="Add" 
    commandname="Add"
    oncommand="CommandAdd_Click"
    runat="server"
/>
</form>
</BODY>
</HTML>


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