ListView选择ObjectDataSource数据源
ListView使用ObjectDataSource作为数据源。
一、创建解决方案,Accesss数据库文件、 类库(DAL)、Web程序。
数据库:表(User),字段(ID,Name,Sex)
类库(DAL)代码:
View Code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Configuration; using System.Data.OleDb; namespace DAL { public class User { public static string connectionString { get { string conStr = ConfigurationManager.ConnectionStrings["study10ConnectionString"].ConnectionString; return conStr; } } public DataTable SelectMethod() { using (OleDbConnection conn = new OleDbConnection(connectionString)) { OleDbDataAdapter oda = new OleDbDataAdapter(); OleDbCommand comm = conn.CreateCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "SELECT [ID],[Name],[Sex] FROM [User]"; oda.SelectCommand = comm; DataTable dt = new DataTable(); oda.Fill(dt); return dt; } } public int DeleteMethod(int ID) { using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); OleDbCommand comm = conn.CreateCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "DELETE FROM [User] WHERE [ID]=@id"; comm.Parameters.Add(new OleDbParameter("@id",ID)); return comm.ExecuteNonQuery(); } } public int UpdataMethod(string name, string sex, int ID) { using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); OleDbCommand comm = conn.CreateCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "UPDATE [User] SET [Name]=@name,[Sex]=@sex WHERE [ID]=@id"; comm.Parameters.Add(new OleDbParameter("@name", name)); comm.Parameters.Add(new OleDbParameter("@sex", sex)); comm.Parameters.Add(new OleDbParameter("@id", ID)); return comm.ExecuteNonQuery(); } } public int InsertMethod(string name, string sex) { using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); OleDbCommand comm = conn.CreateCommand(); comm.CommandType = CommandType.Text; comm.CommandText = "INSERT INTO [User] ([Name],[Sex]) VALUES(@name,@sex)"; comm.Parameters.Add(new OleDbParameter("@name", name)); comm.Parameters.Add(new OleDbParameter("@sex", sex)); return comm.ExecuteNonQuery(); } } } }
Web程序:
配置文件添加connectionStrings节点:
View Code
<?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <connectionStrings> <add name="ConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\study10.accdb;Persist Security Info=True" providerName="System.Data.OleDb" /> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> </configuration>
数据库放在App_Data文件夹中。
ObjectDataSource-TypeName属性=执行数据操作的对象类型(类名)
数据源手动配置就可以了(选择相对应的方法),代码会自动生成。图
Default.aspx代码:
View Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ObjectDataSourceDemo.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="DeleteMethod" InsertMethod="InsertMethod" SelectMethod="SelectMethod" TypeName="DAL.User" UpdateMethod="UpdataMethod"> <DeleteParameters> <asp:Parameter Name="ID" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="name" Type="String" /> <asp:Parameter Name="sex" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="name" Type="String" /> <asp:Parameter Name="sex" Type="String" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:ObjectDataSource> <asp:ListView ID="ListView1" runat="server" DataKeyNames="ID" ItemPlaceholderID="itemPlaceholder" InsertItemPosition="LastItem" DataSourceID="ObjectDataSource1"> <LayoutTemplate> <table border="1" style="background-color:Gray"> <tr> <th> ID </th> <th> Name </th> <th> Sex </th> <th> 删除 </th> <th> 编辑 </th> </tr> <tr id="itemPlaceholder" runat="server"> </tr> </table> </LayoutTemplate> <ItemTemplate> <tr> <td> <%#Eval("ID") %> </td> <td> <%#Eval("Name") %> </td> <td> <%#Eval("Sex") %> </td> <td> <asp:LinkButton ID="lbtnDelete" CommandName="Delete" runat="server">删除</asp:LinkButton> </td> <td> <asp:LinkButton ID="LinkButton1" CommandName="Edit" runat="server">编辑</asp:LinkButton> </td> </tr> </ItemTemplate> <EmptyDataTemplate> 数据为空! </EmptyDataTemplate> <EditItemTemplate> <tr> <td> <%#Eval("ID") %> </td> <td> <asp:TextBox ID="txtName" runat="server" Text='<%#Bind("Name") %>'></asp:TextBox> </td> <td> <asp:TextBox ID="txtSex" runat="server" Text='<%#Bind("Sex") %>'></asp:TextBox> </td> <td> <asp:LinkButton ID="lbtnUpdate" CommandName="Update" runat="server">提交</asp:LinkButton> </td> <td> <asp:LinkButton ID="lbtnCancel" CommandName="Cancel" runat="server">取消</asp:LinkButton> </td> </tr> </EditItemTemplate> <InsertItemTemplate> <tr> <td> </td> <td> <asp:TextBox ID="txtName" runat="server" Text='<%#Bind("Name") %>'></asp:TextBox> </td> <td> <asp:TextBox ID="txtSex" runat="server" Text='<%#Bind("Sex") %>'></asp:TextBox> </td> <td> <asp:LinkButton ID="lbtnUpdate" CommandName="Insert" runat="server">添加</asp:LinkButton> </td> <td> <asp:LinkButton ID="LinkButton2" CommandName="Cancel" runat="server">清除</asp:LinkButton> </td> </tr> </InsertItemTemplate> </asp:ListView> </div> </form> </body> </html>
注意:ListView——首先设置DataKeyNames(ID)用于Delete,Update传递参数。Update,Insert方法需要传递参数来更新,Name,Sex字段用Bind绑定(双向)
最终效果图: