public class WebForm1 : System.Web.UI.Page { ... protected System.Data.DataSet ds; protected System.Data.DataTable eventTable; protected System.Data.OleDb.OleDbDataAdapter daAttendees; protected System.Data.OleDb.OleDbDataAdapter daRooms; protected System.Data.OleDb.OleDbDataAdapter daEvents;
提示:所有OLE DB对象都有SQL Server版本,它们的用法也是一样的。
Page_Load()现在需要创建DataSet对象: private void Page_Load(object sender, System.EventArgs e) { oleDbConnection1.Open(); ds = new DataSet();
然后,必须给OleDbDataAdapter对象赋予查询和连接对象的链接: ds = new DataSet(); daAttendees = new System.Data.OleDb.OleDbDataAdapter( "SELECT * FROM Attendees", oleDbConnection1); daRooms = new System.Data.OleDb.OleDbDataAdapter( "SELECT * FROM Rooms", oleDbConnection1); daEvents = new System.Data.OleDb.OleDbDataAdapter( "SELECT * FROM Events", oleDbConnection1);
使用Fill()调用来执行查询: daEvents = new System.Data.OleDb.OleDbDataAdapter( "SELECT * FROM Events", oleDbConnection1); daAttendees.Fill(ds, "Attendees"); daRooms.Fill(ds, "Rooms"); daEvents.Fill(ds, "Events");
现在进行数据绑定。如前所述,只需把绑定控件上的DataSource属性设置为要绑定的表: daEvents.Fill(ds, "Events"); attendeeList.DataSource = ds.Tables["Attendees"]; roomList.DataSource = ds.Tables["Rooms"];
这段代码设置了属性,但数据绑定要在调用窗体的DataBind()方法之后才进行,该方法过一会儿再调用。在此之前,用Events表中的数据填充DataTable对象: roomList.DataSource = ds.Tables["Rooms"]; eventTable = ds.Tables["Events"];
如果没有回送,就只绑定数据,否则就要刷新数据(假定数据库中的这些数据在会议登记请求的过程中一直是静态的)。回送中的数据绑定也会清除roomList 和 attendeeList控件中的选择。在绑定并刷新这些数据前,应注意这些。但是,在现有的if语句中调用DataBind()会比较简单(这是该语句仍保留在打开数据连接的代码区域中的原因): eventTable = ds.Tables["Events"]; if (!this.IsPostBack) { calendar.SelectedDate = System.DateTime.Now; this.DataBind(); } oleDbConnection1.Close(); }
现在运行这个应用程序,从数据绑定控件中得到所有可用的参加者和会议室数据。
注意:为了运行代码,必须在Access或Server Explorer中明确关闭任何已打开的数据库连接。为此,只需右击Server Explorer中的数据源,选择Close即可。 |