直接用的.net2.0,之前的怎么个情况不了解。
因为使用sqldatasource是直接写sql语句。并且dataset有些缺陷,什么缺乏抽象,弱类型,非面向对象,书上写了一大堆,说不清楚,总之觉得是不太符合分三层的思想,SO。。。
看书上写,用objectdatasource可以和类连接做为数据源。
表:user id,uname,passwd,regdate
类userdb:
....
public DataSet getAllUser()
{
string sql = "select * from [user]";
ada = new SqlDataAdapter(sql, conn);
ds = new DataSet();
ada.Fill(ds, "allUser"); return ds;
}
....
类:
user
...
public class user
{
private int _id;
private string _uname;
private string _passwd;
private DateTime _regDate;
public user()
{
}
public user(string id, string uname, string passwd, string regdate)
{
this._id =Convert.ToInt32(id);
this._uname = uname;
this._passwd = passwd;
this.RegDate = Convert.ToDateTime(regdate);
}
public List<user> getAllUser()
{
List<user> u = new List<user>();
UserDB udb = new UserDB();
DataSet ds = udb.getAllUser();
foreach (DataRow row in ds.Tables["allUser"].Rows)
{
u.Add(new user(row["id"].ToString(), row["uname"].ToString(), row["passwd"].ToString(), row["regDate"].ToString()));
}
return u;
}
public int ID
{
get
{
return this._id;
}
set
{
this._id = value;
}
}
public string UName
{
get
{
return this._uname;
}
set
{
this._uname = value;
}
}
public string PassWD
{
get
{
return this._passwd;
}
set
{
this._passwd = value;
}
}
public DateTime RegDate
{
get
{
return this._regDate;
}
set
{
this._regDate = value;
}
}
}
...
页面
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="getAllUser"
TypeName="user"></asp:ObjectDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="UName" HeaderText="UName" SortExpression="UName" />
<asp:BoundField DataField="PassWD" HeaderText="PassWD" SortExpression="PassWD" />
<asp:BoundField DataField="RegDate" HeaderText="RegDate" SortExpression="RegDate" />
</Columns>
</asp:GridView>
其中,objectdatasource的typename=类名,selectmethod=方法名,还可以定义insert,delete,update。
因为是最简单的显示,点击就可以完成,无需写任何其他代码。需要注意的是,在配置数据源之前,需要先生成一下网站,主要是那几个类,如果不生成一下,是认不出来的。