ASP.Net/ADO.net Database/DataGrid Edit

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

Add asp:textbox to asp:datagrid edit mode

   <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 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">

<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"

/>

<asp:datalist

   id="dlDepts" 
   runat="server" 
   oneditcommand="DataList_Edit"
   onupdatecommand="DataList_Update"
   gridlines="Both"
   backcolor="lightyellow"
   forecolor="darkred"

>

   <itemtemplate>
       Department: 
       <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"
       />
       
Email: <asp:textbox id="txtEmail" text="<%# DataBinder.Eval(Container.DataItem, "LastName") %>" runat="server" />
<asp:LinkButton id="butUpdate" Text="Update" CommandName="Update" runat="server" /> </edititemtemplate>

</asp:datalist> </form> </BODY> </HTML>

      </source>
   
  

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


asp:DataGrid with data edit

   <source lang="csharp">

<%@ 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>
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" />
</body>

</html>

      </source>
   
  


Edit data in asp:datagrid

   <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 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">

<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>

<asp:LinkButton

   id="butAdd" 
   text="Add" 
   commandname="Add"
   oncommand="CommandAdd_Click"
   runat="server"

/> </form> </BODY> </HTML>

      </source>
   
  

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


Use asp:datagrid to add, update

   <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 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">

<asp:Label

   id="lblMessage" 
   Font-Size="12pt"
   Font-Bold="True"
   Font-Name="Lucida Console"
   text="Below is a list of all employees"
   runat="server"

/>

<asp:datalist

   id="dlDepts" 
   runat="server" 
   oneditcommand="DataList_Edit"
   onupdatecommand="DataList_Update"
   gridlines="Both"
   backcolor="lightyellow"
   forecolor="darkred"

>

   <itemtemplate>
       Department: 
       <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"
       />
       
Email: <asp:textbox id="txtEmail" text="<%# DataBinder.Eval(Container.DataItem, "LastName") %>" runat="server" />
<asp:LinkButton id="butUpdate" Text="Update" CommandName="Update" runat="server" /> </edititemtemplate>

</asp:datalist>

<asp:LinkButton

   id="butAdd" 
   text="Add" 
   commandname="Add"
   oncommand="CommandAdd_Click"
   runat="server"

/> </form> </BODY> </HTML>

      </source>
   
  

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