Share Code Web - Chia sẻ niềm đam mê bất tận > Lập trình > ASP/ASP.Net > Học Asp.net qua project cụ thể – Online Diary – Ngày 4
Học Asp.net qua project cụ thể – Online Diary – Ngày 4
Nguyễn Trung Hiếu
Share Code Web Company 2012

Học Asp.net qua project cụ thể – Online Diary – Ngày 4

Tiếp tục chủ đề học Asp.net qua project cụ thể, trong bài này chúng ta sẽ làm tới phần xem lịch biểu trực tuyến.

Xem lại bài cũ đã nhé!

Trang DiarayMain.aspx là trung tâm ứng dụng. Nó hiển thị lịch biểu của tháng hiện tại, và cho biết những ngày nào có các sự kiện hay nhật ký. Nó cũng hiển thị danh sách các sự kiện sắp tới cũng như nhật ký hiện tại.
Để hiển thị khi một ngày có các sự kiện hoặc một mục nhật ký, sự kiện OneDayRender của điều kiểm Calendar được sử dụng:
[C#]
Protected Sub Calendar1_OnDayRender(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles Calendar1.DayRender
If Not e.Day.IsOtherMonth Then
If entryArrayOfDays Is Nothing Then
entryArrayOfDays = GetDaysInMonthWithEntries(Session(“DiaryId”), _
e.Day.Date.Month, e.Day.Date.Year)
End If
If eventArrayOfDays Is Nothing Then
eventArrayOfDays = GetDaysInMonthWithEvents(Session(“DiaryId”), _
e.Day.Date.Month, e.Day.Date.Year)
End If
If entryArrayOfDays(CInt(e.Day.DayNumberText)) Then
e.Cell.BackColor = Drawing.Color.Blue
End If
If eventArrayOfDays(CInt(e.Day.DayNumberText)) Then
e.Cell.ForeColor = Drawing.Color.Red
End If
End If
End Sub
[/C#]
Hai khối If đầu tiên của đoạn mã trên đảm bảo entryArrayOfDays eventArrayOfDays chứa dữ liệu về các ngày có nhật ký hoặc sự kiện. Chúng đều là mảng Boolean, nếu một ngày có nhật ký hoặc sự kiện thì phần tử mảng cho ngày hôm đó có giá trị True. Các mảng này nhận dữ liệu từ các hàm chia sẻ GetDayInMonthWithEntries()GetDaysInMonthWithEvents() của lớp DiaryEntry DiaryEvent

Trong hai khối If tiếp theo, mã lệnh kiểm tra các ngày trong tháng có được thể hiện là có mục nhật ký hay sự kiện không. Nếu có sự kiện, phần văn bản của ngày đó được tô màu đỏ. Nếu có mục nhật ký, phần nền của ngày đó được tô màu xanh.

Ngoài điều kiểm Calendar, trang chính còn có hai điều kiểm GridView. GridView phía trên hiển thị các sự kiện sắp đến, GridView phía dưới hiển thị các mục nhật ký gần đây. Cả hai điều kiểm này đều lấy dữ liệu từ điều kiểm ObjectDataSource—một điều kiểm mới trong ASP.NET 2.0. Trước đây, các điều kiểm nguồn dữ liệu tương tác trực tiếp với cơ sở dữ liệu, rất dễ sử dụng—chỉ cần đặt lên một trang, thiết lập vài thuộc tính,… Tuy nhiên, đó không phải là một lối viết mã hay. Việc tách tầng truy xuất dữ liệu, tầng nghiệp vụ, và tầng trình bày là một lối tốt đã được xem xét, nhưng như thế phải bỏ đi các điều kiểm nguồn dữ liệu dễ-sử-dụng! Tuy nhiên, ObjectDataSource cho phép bạn được cả hai: các điều kiểm dữ liệu dễ sử dụng và sử dụng các lớp để phân tách tầng nghiệp vụ, tầng dữ liệu, và tầng trình bày. Thay vì kết nối trực tiếp đến cơ sở dữ liệu, ObjectDataSource lấy dữ liệu từ một trong các lớp này. Ví dụ, diaryEntriesObjectDataSource trên DiaryMain.aspx lấy dữ liệu từ phương thức GetDiaryEntriesRecentlyChanged() của lớp DiaryEntry, mã đánh dấu của nó như sau:
[C#]





[/C#]
Đặc tính TypeName chỉ định tên lớp, và đặc tính SelectMethod chỉ định phương thức nào của lớp đó sẽ cung cấp dữ liệu. GetDiaryEntriesRecentlyChanged() là phương thức chia sẻ:
[C#]
Public Shared Function GetDiaryEntriesRecentlyChanged(ByVal DiaryId As Integer) _
As SqlDataReader
Dim diaryDBConn As New SqlConnection(conString)
Dim sqlString As String = “GetRecentDiaryEntries”
Dim sqlCmd As New SqlCommand(sqlString, diaryDBConn)
sqlCmd.CommandType = CommandType.StoredProcedure
sqlCmd.Parameters.AddWithValue(“@DiaryId”, DiaryId)

diaryDBConn.Open()
Dim entrySQLDR As SqlDataReader = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection)
sqlCmd = Nothing
Return entrySQLDR
End Function
[/C#]
Phương thức này trả về một đối tượng SqlDataReader gồm những dữ liệu mà điều kiểm ObjectDataSource sẽ sử dụng.
Việc hiển thị dữ liệu chỉ là vấn đề trỏ một điều kiểm vào ObjectDataSource:
[C#]














[/C#]
Trong mã đánh dấu của điều kiểm GridView, đặc tính DataSourceID chỉ định nguồn dữ liệu đó là điều kiểm ObjectDataSource. Ngoài ra, mã đánh dấu này chỉ định những cột nào được hiển thị bằng cách thiết lập AutoGenerateColumns False. Bước cuối cùng là tạo danh sách các cột:
[C#]





[/C#]
Ngoài việc cho phép hiển thị dữ liệu, điều kiểm ObjectDataSource cũng có thể cập nhật, chèn, và xóa các mẫu tin trong cơ sở dữ liệu.

Related Posts

Tác giả: Nguyễn Trung Hiếu

Một blogger ... cùi bắp! Đơn giản: tôi muốn ghi lại những gì xảy ra xung quanh, cả công việc lẫn cuộc sống và chia sẻ với các bạn đọc. Nếu bạn cảm thấy bài viết có nhiều điểm không chính xác, hãy comment và chia sẻ để tôi còn được học hỏi từ những góp ý của bạn. Email: hieunt.dcn@gmail.com

Leave a comment

Bạn phải Đăng nhập để tham gia bình luận.

https://sharecodeweb.net/?s={search_term_string}

Blog Stats

  • 6.212 hits
%d bloggers like this: