asp.net 2.0 中的 三层

来源:互联网 发布:win7重启后数据不对 编辑:程序博客网 时间:2024/06/05 02:45

直接用的.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。

因为是最简单的显示,点击就可以完成,无需写任何其他代码。需要注意的是,在配置数据源之前,需要先生成一下网站,主要是那几个类,如果不生成一下,是认不出来的。