Khi bạn load 1 Usercontrol với phương thức Page.LoadControl(), UserControl được trả về như một thực thể của lớp System.Web.UI.WebControl. có nghĩa là bao gồm tất cả các thuộc tính tuỳ biến, thuộc tính này không có sẵn như với trường hợp Load UserControl động.
Nếu bạn sử dụng Load UserControl động bạn cần ép kiểu của UserControl về đúng kiểu trước khi sử dụng các thuộc tính. Để lấy một tham chiếu tới một Usercontrol bạn cần phải sử dụng chỉ dẫn <%@ Reference %>
Ví dụ: bạn muốn thăm dò ý kiến của mọi người xem họ đã từng sử dụng ngôn ngữ asp cơ bản hay ngôn ngữ asp.net ? Và tuỳ thuộc vào mỗi người họ sẽ chọn asp hay aspnet để đưa ra hiển thị một UserControl.
Trang Survey.aspx
<%@ PageLanguage="C#" AutoEventWireup="true"CodeFile="Survey.aspx.cs"
Inherits="Survey" %>
<%@ ReferenceControl="~/aspsurvey.ascx" %> <%@ ReferenceControl="~/aspnetsurvey.ascx" %>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">
<title>Survey</title> </head>
<body>
<formid="form1"runat="server">
<div>
<asp:Label ID="lblquestion"runat="server"Text="Bạn đã từng dùng ngôn ngữ nào để phát triển Web" /><br/>
<asp:DropDownListID="drpngonngu"AutoPostBack="true" runat="server">
<asp:ListItemText="ASP.NET" Value="1"></asp:ListItem>
<asp:ListItemText="ASP3.0"Value="2"></asp:ListItem>
</asp:DropDownList><br />
<asp:PlaceHolder ID="placesurvey"runat="server"/><br/>
<asp:ButtonID="btnsubmit"runat="server"Text="Submit"onclick="btnsubmit_Click" /><br />
<hr/>
<asp:Label ID="lblresult"runat="server"Text=""/>
</div> </form> </body> </html> Trang Survey.aspx.cs using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
publicpartialclassSurvey : System.Web.UI.Page
{
Control _survey;
protectedvoid Page_Load(object sender, EventArgs e) {
switch (drpngonngu.SelectedValue) {
case"1":
_survey = Page.LoadControl("aspnetsurvey.ascx"); break;
case"2":
_survey = Page.LoadControl("aspsurvey.ascx"); break;
}
if (_survey != null)
placesurvey.Controls.Add(_survey); }
protectedvoid btnsubmit_Click(object sender, EventArgs e) {
switch (drpngonngu.SelectedValue) {
case"1":
aspnetsurvey _aspnetsurvey = (aspnetsurvey)_survey;
lblresult.Text = "Kết quả thăm dò ý kiến về ngôn ngữ asp.net của bạn là <br>"; lblresult.Text += "nhanh: " + _aspnetsurvey.KnowFast.ToString() + "<br>"; lblresult.Text += "mới nhất: " + _aspnetsurvey.KnowNewest.ToString(); break;
case"2":
aspsurvey _aspsurvey = (aspsurvey)_survey;
lblresult.Text = "Kết quả thăm dò ý kiến về ngôn ngữ asp3.0 của bạn là <br>"; lblresult.Text += "chậm: " + _aspsurvey.KnowSlow.ToString() + "<br>"; lblresult.Text += "lỗi thời: " + _aspsurvey.KnowOutdate.ToString(); break;
} } }
Với hai Control aspnetsurvey.ascx
<%@Control Language="C#"AutoEventWireup="true"CodeFile="aspnetsurvey.ascx.cs"
Inherits="aspnetsurvey" %>
<asp:CheckBox ID="chkfast"runat="server" Text="Bạn có đồng ý asp.net nhanh?"/><br/> <asp:CheckBox ID="chknewest"runat="server"Text="Bạn có đồng ý asp.net là ngôn ngữ mới nhất"/>
aspnetsurvey.ascx.cs
publicpartialclassaspnetsurvey : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e) {
}
publicbool KnowFast {
get { return chkfast.Checked; } }
publicbool KnowNewest {
get { return chknewest.Checked; } }
}
aspsurvey.ascx
<%@ ControlLanguage="C#"AutoEventWireup="true"CodeFile="aspsurvey.ascx.cs"
Inherits="aspsurvey" %>
<asp:CheckBoxID="chkslow"runat="server" Text="Bạn có đồng ý asp3.0 là chậm?"/><br/> <asp:CheckBoxID="chkoutdate"runat="server"Text="Bạn có đồng ý asp3.0 là ngôn ngữ lỗi thời"/>
aspsurvey.ascx.cs
using System;
publicpartialclassaspsurvey : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e) {
}
publicbool KnowSlow {
get { return chkslow.Checked; } }
publicbool KnowOutdate {
get { return chkoutdate.Checked; } }
}
Chương 9 Điều khiển ADO.NET
Hầu hết ứng dụng hay các website đều cần phải có cơ sở dữ liệu, để lưu trữ dữ liệu, xử lý thông tin và đưa ra các báo cáo, hỗ trợ tìm kiếm…
Khi dữ liệu trở thành trung tâm của ứng dụng thì cung cấp các chức năng tới người dùng phụ thuộc vào khả năng thao tác dữ liệu, vấn đề mà người thiết kế và người xây dựng ứng dụng quan tâm khi sử dụng dữ liệu là:
Lưu dữ liệu tập trung
Đảm bảo khả năng truy xuất đồng thời của nhiều người dùng trên dữ liệu
Đảm bảo thời gian hồi đáp ngắn cho mỗi người dùng
Bảo mật dữ liệu
Trao đổi dữ liệu giữa các hệ thống khác nhau
Những vấn đề này được giải quyết dựa vào khả năng của các hệ quản trị cơ sở dữ liệu(HQT CSDL) và các phần mềm xử lý dữ liệu do HQL CSDL cung cấp. Net truy xuất dữ liệu qua ADO.NET, đặc điểm chính của ADO.NET là khả năng làm việc vơi dữ liệu không kết nối, dữ liệu được lưu trữ trong bộ nhớ như một csdl thu nhỏ gọi là dataset, nhằm tăng tốc độ tính toán, xử lý tính toán và hạn chế sử dụng tài nguyên trên Database Server. ĐẶc điểm quan trọng thứ 2 là khả năng xử lý dữ liệu chuẩn XML, dữ liệu ở dạng XMl có thể trao đổi giữa bất kỳ hệ thống nào nên ứng dụng của bạn sẽ có nhiều khả năng làm việc với nhiều ứng dụng khác.