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 5
Học Asp.net qua project cụ thể – Online Diary – Ngày 5
Nguyễn Trung Hiếu
Share Code Web Company 2012

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

Ngày thứ 5 sẽ hướng dẫn các bạn làm thao tác tạo, chỉnh sửa, và xem một mục nhật ký


Trang DayView.aspx cho phép chỉnh sửa nhật ký. Trang này chứa một form cho phép bạn nhập tiêu đề và nội dung mục nhật ký. Nó cũng hiển thị bất cứ mục nhật ký nào đang tồn tại. Tất cả công việc được hoàn tất bằng cách sử dụng lớp DiaryEntry. Sự kiện Page_Load tạo một lớp DiaryEntry mới, truyền cho phương thức khởi dựng DiaryId của người dùng hiện tại cũng như ngày mà trang này nhắc đến:

[C#]
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
mDiaryEntry = New DiaryEntry(CInt(Session(“DiaryId”)),CDate(dayShownLabel.Text))
changeDayCalendar.SelectedDate = CDate(dayShownLabel.Text)
changeDayCalendar.VisibleDate = changeDayCalendar.SelectedDate
If Not IsPostBack Then
entryTextTextBox.Text = mDiaryEntry.EntryText
entryTitleTextBox.Text = mDiaryEntry.EntryTitle
End If
End Sub

[/C#]
mDiaryEntry là một biến toàn cục, được sử dụng để chứa đối tượng DiaryEntry ứng với ngày đang được chỉnh sửa.
Phương thức khởi dựng, được trình bày trong đoạn mã sau, thực hiện lấy dữ liệu:

[C#]
Public Sub New(ByVal DiaryId As Integer, ByVal EntryDate As Date)
mDiaryId = DiaryId
If mDiaryId > 0 Then

Try
Dim diaryDBConn As New SqlConnection(conString)
Dim sqlString As String = “GetDiaryEntryByDate”
Dim sqlCmd As New SqlCommand(sqlString, diaryDBConn)
sqlCmd.CommandType = CommandType.StoredProcedure

sqlCmd.Parameters.AddWithValue(“@DiaryId”, mDiaryId)
sqlCmd.Parameters.AddWithValue(“@EntryFromDate”, EntryDate)
sqlCmd.Parameters.AddWithValue(“@EntryToDate”, EntryDate)

diaryDBConn.Open()
Dim diaryEntrySQLDR As SqlDataReader = _
sqlCmd.ExecuteReader(CommandBehavior.CloseConnection)
sqlCmd = Nothing

If diaryEntrySQLDR.Read() Then
mDiaryEntryId = CLng(diaryEntrySQLDR(“DiaryEntryId”))
mEntryDate = CDate(diaryEntrySQLDR(“EntryDate”))
mEntryTitle = diaryEntrySQLDR(“EntryTitle”).ToString
mEntryText = diaryEntrySQLDR(“EntryText”).ToString
Else
mDiaryEntryId = -1
mEntryDate = EntryDate
End If

diaryEntrySQLDR.Close()
diaryEntrySQLDR = Nothing
diaryDBConn.Close()
diaryDBConn = Nothing

Catch ex As Exception
mDiaryEntryId = -1
End Try

End If
End Sub

[/C#]
Thủ tục tồn trữ GetDiaryEntryByDate được gọi để lấy dữ liệu. N ếu chưa có mục nhật ký nào cho ngày hôm đó, mDiaryEntryId được gán -1 và tất cả các thuộc tính khác được gán các giá trị mặc định. Ngược lại, chúng nhận dữ liệu từ cơ sở dữ liệu.Khi hộp tiêu đề hoặc hộp nội dung mục nhật ký thay đổi, mDiaryEntry sẽ được cập nhật:

[C#]
Protected Sub entryTitleTextBox_TextChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles entryTitleTextBox.TextChanged
mDiaryEntry.EntryTitle = entryTitleTextBox.Text
End Sub

Protected Sub entryTextTextBox_TextChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles entryTextTextBox.TextChanged
mDiaryEntry.EntryText = entryTextTextBox.Text
End Sub

[/C#]

Việc lưu các thay đổi sẽ diễn ra khi bạn nhắp nút Lưu nhật ký:

[C#]

Protected Sub saveDiaryEntryButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles saveDiaryEntryButton.Click
mDiaryEntry.Save()
End Sub

[/C#]

Mọi thứ liên quan đến việc gọi phương thức Save() của đối tượng DiaryEntry:

[C#]

Public Sub Save()
If mDiaryEntryId = -1 Then
InsertNewDiaryEntry()
Else
UpdateDiaryEntry()
End If
End Sub

[/C#]

Dựa vào mDiaryEntryId có bằng -1 hay không, phương thức này chèn một mục nhật ký mới vào cơ sở dữ liệu hoặc cập nhật mục nhật ký đã tồn tại. Phương thức riêng InsertNewDiaryEntry() chèn một mục nhật ký mới:

[C#]
Private Sub InsertNewDiaryEntry()
If mDiaryId <> -1 Then
Dim diaryDBConn As New SqlConnection(conString)
Dim sqlString As String = “InsertDiaryEntry”
Dim sqlCmd As New SqlCommand(sqlString, diaryDBConn)
sqlCmd.CommandType = CommandType.StoredProcedure

sqlCmd.Parameters.AddWithValue(“@DiaryId”, mDiaryId)
sqlCmd.Parameters.AddWithValue(“@EntryDate”, mEntryDate)
sqlCmd.Parameters.AddWithValue(“@EntryTitle”, mEntryTitle)
sqlCmd.Parameters.AddWithValue(“@EntryText”, mEntryText)
sqlCmd.Parameters.Add(“@NewDiaryEntryId”, SqlDbType.BigInt)
sqlCmd.Parameters(“@NewDiaryEntryId”).Direction = ParameterDirection.ReturnValue
diaryDBConn.Open()
sqlCmd.ExecuteNonQuery()
mDiaryEntryId = CLng(sqlCmd.Parameters(“@NewDiaryEntryId”).Value())

diaryDBConn.Close()
sqlCmd = Nothing
diaryDBConn = Nothing
End If
End Sub

[/C#]
Phương thức riêng UpdateDiaryEntry() cập nhật mục nhật ký đã tồn tại:

[C#]
Private Sub UpdateDiaryEntry()
If mDiaryEntryId <> -1 Then
Dim diaryDBConn As New SqlConnection(conString)
Dim sqlString As String = “UpdateDiaryEntry”
Dim sqlCmd As New SqlCommand(sqlString, diaryDBConn)
sqlCmd.CommandType = CommandType.StoredProcedure

sqlCmd.Parameters.AddWithValue(“@DiaryEntryId”, mDiaryEntryId)
sqlCmd.Parameters.AddWithValue(“@EntryDate”, mEntryDate)
sqlCmd.Parameters.AddWithValue(“@EntryTitle”, mEntryTitle)
sqlCmd.Parameters.AddWithValue(“@EntryText”, mEntryText)

diaryDBConn.Open()
sqlCmd.ExecuteNonQuery()
diaryDBConn.Close()
sqlCmd = Nothing
diaryDBConn = Nothing
End If
End Sub

[/C#]
Phần tiếp theo sẽ thảo luận về mã lệnh chỉnh sửa, xem, và xóa các sự kiện.

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

  • 5.877 hits
%d bloggers like this: