ASP.Net/ADO.net Database/DataGrid Edit
Версия от 15:30, 26 мая 2010; (обсуждение)
Содержание
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>