Tải bản đầy đủ

Mô hình 3 lớp ASP.NET

Bài 10:
LÀM LẠI BÀI 8 VỚI MÔ HÌNH 3 LỚP
1. Mục đích
Trong bài thực hành này, bạn sẽ xây dựng trang website quản lý tin:
• Cho phép chọn một lĩnh vực từ combo box và hiển thị danh sách tin thuộc lĩnh vực
được chọn.
• Cho phép sắp xếp danh sách tin theo ngày đăng tin, tiêu đề.
• Cho phép thêm, xoá, sửa tin.

2. Yêu cầu
• Đã nắm bắt được cách thức kết nối CSDL.
• Xây dựng được kiến trúc 3 tầng.
• Tạo các class: LinhVucInfo, BanTinInfo, LinhVucController, BanTinController,
LinhVucDAL, BanTinDAL, DataService.

3. Vấn đề liên quan
• Thao tác với DataGrid: hiển thị dữ liệu, phân trang, sắp xếp,…

4. Thời gian để hoàn tất bài thực hành: 120 phút

1



1. Tạo trang QuanLyTin3Lop.aspx


Tạo DropDownList Lĩnh vực
o Kéo thả 1 DropDownList vào QuanLyTin3Lop.aspx và đặt tên
DropDownListLinhVuc



Tạo GridView Bản tin
o Kéo thả 1 GridView vào QuanLyTin3Lop.aspx đặt tên GridViewBanTin
o Thay đổi giao diện : phải chuột

Auto format

Select a scheme : chọn

Professional

2. Tạo thư mục App_Code


Right-Click project, chọn Add ASP.NET Folder

App_Code

3. Tạo lớp DataServcie.cs trong thư mục App_Code và viết code như sau:


Right-Click thư mục App_Code, chọn Add New Item…

//Thêm vào thư viện SqlClient
using System.Data.SqlClient;
///
/// Đây là lớp dịch vụ về thao tác dữ liệu
/// (Kết nối, Truy xuất, Thêm, Xoá, Sửa).
///

public class DataService


{
///
/// Khai báo các thuộc tính của lớp
///

// Biến connection kết nối đến database.
private SqlConnection _connection;
// Chuỗi kết nối.

2


private string _connectionString = "server=.; database=WebNews; user id=sa;
password=sa12345";
// Biến command dùng để thực thi câu query hay non-query, store.
public SqlCommand _command;
// Biến data adapter để thực thi query, non-query, store.
private SqlDataAdapter _dataAdapter;
///
/// Định nghĩa các thuộc tính của lớp
///

//Contructor : Khởi tạo giá trị cho các đối tượng
public DataService()
{
_connection = new SqlConnection(_connectionString);
_command = new SqlCommand();
_command.Connection = _connection;
_dataAdapter = new SqlDataAdapter();
_dataAdapter.SelectCommand
_dataAdapter.InsertCommand
_dataAdapter.UpdateCommand
_dataAdapter.DeleteCommand

=
=
=
=

_command;
_command;
_command;
_command;

}

// Mở kết nối dữ liệu.
public void openConnection()
{
// Chỉ mở kết nối khi nó đóng.
if (_connection.State == ConnectionState.Closed)
_connection.Open();
}
// Đóng kết nối dữ liệu.
public void closeConnection()
{
if (_connection.State == ConnectionState.Open)
_connection.Close();
}
// Yêu cầu SQLServer thực thi store (SELECT *) và trả kết quả về.
// Sử dụng đối tượng DataAdapter và Command
public DataSet executeSelectStore(string storeName)
{
try
{
DataSet ds = new DataSet();
_command.CommandText = storeName;
_command.CommandType = CommandType.StoredProcedure;
_dataAdapter.Fill(ds);
return ds;
}
catch { throw; }
}
/// Thực thi DML store (INSERT, UPDATE, DELETE).

3


///
public void executeDMLStore(string storeName)
{
try
{
openConnection();
_command.CommandText = storeName;
_command.CommandType = CommandType.StoredProcedure;
_command.ExecuteNonQuery();
}
catch { throw; }
finally
{
// Closes the connection if there is no transaction.
if (_command.Transaction == null)
closeConnection();
}
}
}

4. Tạo thư mục BusinessInfo trong thư mục App_Code.
5. Tạo lớp LinhVucInfo.cs trong thư mục BusinessInfo và viết code như sau:
///
/// Lớp LinhVucInfo đại diện cho bảng LinhVuc trong SQL Server.
/// Được sử dụng để lưu giá trị của Lĩnh vực và
/// truyền dữ liệu (tham số) giữa các lớp.
///

public class LinhVucInfo
{
///
/// Khai báo thuộc tính
/// Tất cả đều phải khai báo private
///

private string strMaLinhVuc;
private string strTenLinhVuc;
///
/// Định nghĩa phương thức
/// (GET: truy xuất, SET: Gán, cập nhật giá trị) cho thuộc tính
/// Tất cả đều phải khai báo public
///

public string MaLinhVuc
{
get { return strMaLinhVuc; }
set { strMaLinhVuc = value; }
}
public string TenLinhVuc
{
get { return strTenLinhVuc; }
set { strTenLinhVuc = value; }
}
}

6. Tạo lớp BanTinInfo.cs trong thư mục BusinessInfo và viết code như sau:
///
/// Lớp LinhVucInfo đại diện cho bảng LinhVuc trong SQL Server.
/// Được sử dụng để lưu giá trị của Lĩnh vực và
/// truyền dữ liệu (tham số) giữa các lớp.
///

public class BanTinInfo
{
private string strMaBanTin;

4


private
private
private
private
private
private
private

string strTieuDe;
string strNoiDungTomTat;
string strNoiDung;
DateTime dtNgayDangTin;
string strHinhAnh;
string strChuThichHinh;
string strMaLinhVuc;

public string MaBanTin
{
get { return strMaBanTin; }
set { strMaBanTin = value; }
}
public string TieuDe
{
get { return strTieuDe; }
set { strTieuDe = value; }
}
public string NoiDungTomTat
{
get { return strNoiDungTomTat; }
set { strNoiDungTomTat = value; }
}
public string NoiDung
{
get { return strNoiDung; }
set { strNoiDung = value; }
}
public DateTime NgayDangTin
{
get { return dtNgayDangTin; }
set { dtNgayDangTin = value; }
}
public string HinhAnh
{
get { return strHinhAnh; }
set { strHinhAnh = value; }
}
public string ChuThichHinh
{
get { return strChuThichHinh; }
set { strChuThichHinh = value; }
}
public string MaLinhVuc
{
get { return strMaLinhVuc; }
set { strMaLinhVuc = value; }
}
}

7. Viết store cho bảng Lĩnh vực như sau:
/*
=====================================================================================
/
TABLE: LinhVuc
/
=====================================================================================
*/
/****** Nếu Store đã tồn tại thì xoá ******/
if exists (select * from dbo.sysobjects where id = object_id(N'LinhVucGet') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure LinhVucGet
GO

5


if exists (select * from dbo.sysobjects where id = object_id(N'LinhVucList') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure LinhVucList
GO
if exists (select * from dbo.sysobjects where id = object_id(N'LinhVucAdd') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure LinhVucAdd
GO
if exists (select * from dbo.sysobjects where id = object_id(N'LinhVucUpdate') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure LinhVucUpdate
GO
if exists (select * from dbo.sysobjects where id = object_id(N'LinhVucDelete') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure LinhVucDelete
GO
/* -----------------------------------------------------------------------------------/
LinhVucGet
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE LinhVucGet
@MaLinhVuc char(10)
AS
SELECT
[MaLinhVuc],
[TenLinhVuc]
FROM LinhVuc
WHERE
[MaLinhVuc] = @MaLinhVuc
GO
/* -----------------------------------------------------------------------------------/
LinhVucList
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE LinhVucList
AS
SELECT
[MaLinhVuc],
[TenLinhVuc]
FROM LinhVuc
GO
/* -----------------------------------------------------------------------------------/
LinhVucAdd
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE LinhVucAdd
@MaLinhVuc char(10),
@TenLinhVuc nvarchar(255)
AS

6


INSERT INTO LinhVuc (
[MaLinhVuc],
[TenLinhVuc]
) VALUES (
@MaLinhVuc,
@TenLinhVuc
)
GO
/* -----------------------------------------------------------------------------------/
LinhVucUpdate
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE LinhVucUpdate
@MaLinhVuc char(10),
@TenLinhVuc nvarchar(255)
AS
UPDATE LinhVuc SET
[TenLinhVuc] = @TenLinhVuc
WHERE
[MaLinhVuc] = @MaLinhVuc
GO
/* -----------------------------------------------------------------------------------/
LinhVucDelete
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE LinhVucDelete
@MaLinhVuc char(10)
AS
DELETE FROM LinhVuc
WHERE
[MaLinhVuc] = @MaLinhVuc
GO

8. Viết store cho bảng Bản tin như sau:
/*
=====================================================================================
/
TABLE: BanTin
/
=====================================================================================
*/
/****** Nếu Store đã tồn tại thì xoá ******/
if exists (select * from dbo.sysobjects where id = object_id(N'BanTinGet') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BanTinGet
GO
if exists (select * from dbo.sysobjects where id = object_id(N'BanTinList') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BanTinList
GO
if exists (select * from dbo.sysobjects where id = object_id(N'BanTinGetByLinhVuc')
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BanTinGetByLinhVuc
GO

7


if exists (select * from dbo.sysobjects where id = object_id(N'BanTinAdd') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BanTinAdd
GO
if exists (select * from dbo.sysobjects where id = object_id(N'BanTinUpdate') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BanTinUpdate
GO
if exists (select * from dbo.sysobjects where id = object_id(N'BanTinDelete') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure BanTinDelete
GO

/* -----------------------------------------------------------------------------------/
BanTinGet
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE BanTinGet
@MaBanTin char(10)
AS
SELECT
[MaBanTin],
[TieuDe],
[NoiDungTomTat],
[NoiDung],
[NgayDangTin],
[HinhAnh],
[ChuThichHinh],
[MaLinhVuc]
FROM BanTin
WHERE
[MaBanTin] = @MaBanTin
GO
/* -----------------------------------------------------------------------------------/
BanTinList
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE BanTinList
AS
SELECT
[MaBanTin],
[TieuDe],
[NoiDungTomTat],
[NoiDung],
[NgayDangTin],
[HinhAnh],
[ChuThichHinh],
[MaLinhVuc]
FROM BanTin
GO
/* -----------------------------------------------------------------------------------

8


-/
BanTinGetByLinhVuc
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE BanTinGetByLinhVuc
@MaLinhVuc char(10)
AS
SELECT
[MaBanTin],
[TieuDe],
[NoiDungTomTat],
[NoiDung],
[NgayDangTin],
[HinhAnh],
[ChuThichHinh],
[MaLinhVuc]
FROM BanTin
WHERE
[MaLinhVuc]=@MaLinhVuc
GO
/* -----------------------------------------------------------------------------------/
BanTinAdd
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE BanTinAdd
@MaBanTin char(10),
@TieuDe nvarchar(255),
@NoiDungTomTat nvarchar(500),
@NoiDung ntext,
@NgayDangTin datetime,
@HinhAnh nvarchar(255),
@ChuThichHinh nvarchar(255),
@MaLinhVuc char(10)
AS
INSERT INTO BanTin (
[MaBanTin],
[TieuDe],
[NoiDungTomTat],
[NoiDung],
[NgayDangTin],
[HinhAnh],
[ChuThichHinh],
[MaLinhVuc]
) VALUES (
@MaBanTin,
@TieuDe,
@NoiDungTomTat,
@NoiDung,
@NgayDangTin,
@HinhAnh,
@ChuThichHinh,
@MaLinhVuc
)
GO
/* -----------------------------------------------------------------------------------/
BanTinUpdate
/ -----------------------------------------------------------------------------------

9


-- */
CREATE PROCEDURE BanTinUpdate
@MaBanTin char(10),
@TieuDe nvarchar(255),
@NoiDungTomTat nvarchar(500),
@NoiDung ntext,
@NgayDangTin datetime,
@HinhAnh nvarchar(255),
@ChuThichHinh nvarchar(255),
@MaLinhVuc char(10)
AS
UPDATE BanTin SET
[TieuDe] = @TieuDe,
[NoiDungTomTat] = @NoiDungTomTat,
[NoiDung] = @NoiDung,
[NgayDangTin] = @NgayDangTin,
[HinhAnh] = @HinhAnh,
[ChuThichHinh] = @ChuThichHinh,
[MaLinhVuc] = @MaLinhVuc
WHERE
[MaBanTin] = @MaBanTin
GO
/* -----------------------------------------------------------------------------------/
BanTinDelete
/ ------------------------------------------------------------------------------------ */
CREATE PROCEDURE BanTinDelete
@MaBanTin char(10)
AS
DELETE FROM BanTin
WHERE
[MaBanTin] = @MaBanTin
GO

9. Tạo thư mục DataAccessLayer trong thư mục App_Code.
10. Tạo lớp LinhVucDAL.cs trong thư mục DataAccessLayer và viết code như sau:
///
/// Lớp LinhVucDAL thông qua lớp dịch vụ
/// DataService để thao tác dữ liệu
///

public class LinhVucDAL
{
//Khai báo biến _ds là lớp DataService
private DataService _ds;
//Contructor
public LinhVucDAL()
{
_ds = new DataService();
}
// Lấy danh sách tất cả lĩnh vực
public DataSet GetLinhVuc()
{
return _ds.executeSelectStore("LinhVucList");
}
// Lấy tất cả thông tin của 1 lĩnh vực theo MaLinhVuc.

10


public DataSet GetLinhVuc(string strMaLinhVuc)
{
SqlParameter parMALINHVUC = new SqlParameter("@MaLinhVuc", SqlDbType.NChar,
10);
parMALINHVUC.Value = strMaLinhVuc;
_ds._command.Parameters.Add(parMALINHVUC);
return _ds.executeSelectStore("LinhVucGet");
}
// Thêm 1 lĩnh.
public void AddLinhVuc(LinhVucInfo LVInfo)
{
SqlParameter parMaLinhVuc = new SqlParameter("@MaLinhVuc",
SqlDbType.NChar,10);
SqlParameter parTenLinhVuc = new SqlParameter("@TenLinhVuc",
SqlDbType.NVarChar, 255);
parMaLinhVuc.Value = LVInfo.MaLinhVuc;
parTenLinhVuc.Value = LVInfo.TenLinhVuc;
_ds._command.Parameters.Add(parMaLinhVuc);
_ds._command.Parameters.Add(parTenLinhVuc);
_ds.executeDMLStore("LinhVucAdd");
}
// Cập nhật thông tin của 1 lĩnh.
public void UpdateLinhVuc(LinhVucInfo LVInfo)
{
SqlParameter parMaLinhVuc = new SqlParameter("@MaLinhVuc", SqlDbType.NChar,
10);
SqlParameter parTenLinhVuc = new SqlParameter("@TenLinhVuc",
SqlDbType.NVarChar, 255);
parMaLinhVuc.Value = LVInfo.MaLinhVuc;
parTenLinhVuc.Value = LVInfo.TenLinhVuc;
_ds._command.Parameters.Add(parMaLinhVuc);
_ds._command.Parameters.Add(parTenLinhVuc);
_ds.executeDMLStore("LinhVucUpdate");
}
// Xoá 1 lĩnh.
public void DeleteLinhVuc(LinhVucInfo LVInfo)
{
SqlParameter parMaLinhVuc = new SqlParameter("@MaLinhVuc", SqlDbType.NChar,
10);
parMaLinhVuc.Value = LVInfo.MaLinhVuc;
_ds._command.Parameters.Add(parMaLinhVuc);
_ds.executeDMLStore("LinhVucDelete");
}
}

11. Tạo lớp BanTinDAL.cs trong thư mục DataAccessLayer và viết code như sau:
using System.Data.SqlClient;
///
/// Lớp BanTinDAL thông qua lớp dịch vụ
/// DataService để thao tác dữ liệu

11


///

public class BanTinDAL
{
//Khai báo biến _ds là lớp DataService
private DataService _ds;
//Contructor
public BanTinDAL()
{
_ds = new DataService();
}

/// Lấy danh sách Bản tin
public DataSet GetBanTin()
{
return _ds.executeSelectStore("BanTinList");
}
/// Lấy thông tin của 1 bản tin theo MaBanTin.
public DataSet GetBanTin(string strMaBanTin)
{
SqlParameter parMaBanTin = new SqlParameter("@MaBanTin", SqlDbType.NChar, 10);
parMaBanTin.Value = strMaBanTin;
_ds._command.Parameters.Add(parMaBanTin);
return _ds.executeSelectStore("BanTinGet");
}
/// Lấy bản tin theo MaLinhVuc.
public DataSet GetBanTin_MaLinhVuc(string strMaLinhVuc)
{
SqlParameter parMaLinhVuc = new SqlParameter("@MaLinhVuc", SqlDbType.NChar,
10);
parMaLinhVuc.Value = strMaLinhVuc;
_ds._command.Parameters.Add(parMaLinhVuc);
return _ds.executeSelectStore("BanTinGetByLinhVuc");
}
//Tạo các tham số
private void CreateParameter(BanTinInfo BTInfo)
{
SqlParameter parMaBanTin = new SqlParameter("@MaBanTin", SqlDbType.NChar);
SqlParameter parTieuDe = new SqlParameter("@TieuDe", SqlDbType.NVarChar);
SqlParameter parNoiDungTomTat = new SqlParameter("@NoiDungTomTat",
SqlDbType.NVarChar);
SqlParameter parNoiDung = new SqlParameter("@NoiDung", SqlDbType.NVarChar);
SqlParameter parNgayDangTin = new SqlParameter("@NgayDangTin",
SqlDbType.DateTime);
SqlParameter parHinhAnh = new SqlParameter("@HinhAnh", SqlDbType.NVarChar);
SqlParameter parChuThichHinh = new SqlParameter("@ChuThichHinh",
SqlDbType.NVarChar);
SqlParameter parMaLinhVuc = new SqlParameter("@MaLinhVuc",
SqlDbType.NVarChar);
parMaBanTin.Value = BTInfo.MaBanTin;
parTieuDe.Value = BTInfo.TieuDe;
parNoiDungTomTat.Value = BTInfo.NoiDungTomTat;
parNoiDung.Value = BTInfo.NoiDung;
parNgayDangTin.Value = BTInfo.NgayDangTin;
parHinhAnh.Value = BTInfo.HinhAnh;
parChuThichHinh.Value = BTInfo.ChuThichHinh;

12


parMaLinhVuc.Value

= BTInfo.MaLinhVuc;

_ds._command.Parameters.Add(parMaBanTin);
_ds._command.Parameters.Add(parTieuDe);
_ds._command.Parameters.Add(parNoiDungTomTat);
_ds._command.Parameters.Add(parNgayDangTin);
_ds._command.Parameters.Add(parHinhAnh);
_ds._command.Parameters.Add(parChuThichHinh);
_ds._command.Parameters.Add(parMaLinhVuc);
}
//Thêm 1 bản tin
public void AddBanTin(BanTinInfo BTInfo)
{
CreateParameter(BTInfo);
_ds.executeDMLStore("BanTinAdd");
}
//Cập nhật thông tin của 1 bản tin
public void UpdateBanTin(BanTinInfo BTInfo)
{
CreateParameter(BTInfo);
_ds.executeDMLStore("BanTinUpdate");
}
//Xoá 1 bản tin
public void DeleteBanTin(BanTinInfo BTInfo)
{
SqlParameter parMaBanTin = new SqlParameter("@MaBanTin", SqlDbType.NChar, 10);
parMaBanTin.Value = BTInfo.MaBanTin;
_ds._command.Parameters.Add(parMaBanTin);
_ds.executeDMLStore("BanTinDelete");
}
}

12. Tạo thư mục Controllers trong thư mục App_Code.
13. Tạo lớp LinhVucController.cs trong thư mục Controllers và viết code như sau:
public class LinhVucController
{
DataSet ds;
LinhVucDAL LV_DAL;
public LinhVucController()
{
LV_DAL = new LinhVucDAL();
}
public DataSet GetLinhVuc()
{
return LV_DAL.GetLinhVuc();
}
public LinhVucInfo GetLinhVuc(string strMaLinhVuc)
{
LinhVucInfo LVInfo = new LinhVucInfo();
ds = LV_DAL.GetLinhVuc(strMaLinhVuc);
DataRow dr = ds.Tables[0].Rows[0];
LVInfo.MaLinhVuc = dr["MaLinhVuc"].ToString();
LVInfo.TenLinhVuc = dr["TenLinhVuc"].ToString();
return LVInfo;
}
public void AddLinhVuc(LinhVucInfo LVInfo)
{

13


LV_DAL.AddLinhVuc(LVInfo);
}
public void UpdateLinhVuc(LinhVucInfo LVInfo)
{
LV_DAL.UpdateLinhVuc(LVInfo);
}
public void DeleteLinhVuc(LinhVucInfo LVInfo)
{
LV_DAL.DeleteLinhVuc(LVInfo);
}
}

14. Tạo lớp BanTinController.cs trong thư mục Controllers và viết code như sau:
public class BanTinController
{
DataSet ds;
BanTinDAL BT_DAL;
public BanTinController()
{
BT_DAL = new BanTinDAL();
}
public DataSet GetBanTin()
{
return BT_DAL.GetBanTin();
}
public DataSet GetBanTin_MaLinhVuc(string strMaLinhVuc)
{
return BT_DAL.GetBanTin_MaLinhVuc(strMaLinhVuc);
}
public BanTinInfo GetBanTin(string strMaBanTin)
{
BanTinInfo BTInfo = new BanTinInfo();
ds = BT_DAL.GetBanTin(strMaBanTin);
DataRow dr = ds.Tables[0].Rows[0];
BTInfo.MaBanTin = dr["MaBanTin"].ToString();
BTInfo.TieuDe = dr["TieuDe"].ToString();
BTInfo.NoiDungTomTat = dr["NoiDungTomTat"].ToString();
BTInfo.NoiDung = dr["NoiDung"].ToString();
BTInfo.NgayDangTin = DateTime.Parse(dr["NgayDangTin"].ToString());
BTInfo.HinhAnh = dr["HinhAnh"].ToString();
BTInfo.ChuThichHinh = dr["ChuThichHinh"].ToString();
BTInfo.MaLinhVuc = dr["MaLinhVuc"].ToString();
return BTInfo;
}
public void AddBanTin(BanTinInfo BTInfo)
{
BT_DAL.AddBanTin(BTInfo);
}
public void UpdateBanTin(BanTinInfo BTInfo)
{
BT_DAL.UpdateBanTin(BTInfo);
}
public void DeleteBanTin(BanTinInfo BTInfo)
{
BT_DAL.DeleteBanTin(BTInfo);
}
}

15. Trong cửa sổ property của GridViewBanTin chọn Columns
16. Chọn BoundField rồi Add 3 lần cho Ngày đăng tin, Tiêu đề và Nội dung tóm tắt.

14


17. Add CommandField Delete, Edit, Select và thiết lập thuộc tính như sau:
Tên cột

Thuộc tính

Giá trị

NGAYDANGTIN

HeaderText

Ngày đăng tin

NGAYDANGTIN

DataFiled

NgayDangTin

TIEUDE

HeaderText

Tiêu đề

TIEUDE

DataFiled

TieuDe

NOIDUNGTOMTAT

HeaderText

Nội dung tóm tắt

NOIDUNGTOMTAT

DataFiled

NoiDungTomTat

Delete

HeaderText

Xóa

Edit

HeaderText

Sửa

Select

HeaderText

Chọn

18. Trong cửa sổ property của GridViewBanTin đặt thuộc tính DataKeyNames là MaBanTin

19. Thêm vào button Thêm tin (ID: btnThemTin)
20. Thêm vào Label thông báo(ID: lblThongBao)
21. Thiết lập phân trang cho GridView : vào Properties chọn
15


• Allow paging : true (cho phép phân trang)
• Page size : 2 (cho phép 1 lần chỉ hiển thị 4 dòng dữ liệu)
22. Thiết lập sắp xếp theo cột cho Gridview

• Allow sorting : true (cho phép sắp xếp theo cột)
23. Viết code cho trang QuanLyTin3Lop.aspx.cs như sau:
public partial class QuanLyTin3Lop : System.Web.UI.Page
{
LinhVucController LV_Ctl = new LinhVucController();
LinhVucInfo LVInfo= new LinhVucInfo();
BanTinController BT_Ctl = new BanTinController();
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
SettingDropDownListLinhVuc();
}
GetDataForGridViewBanTin();
}
private void GetDataForGridViewBanTin()
{
ds = BT_Ctl.BanTinGetByLinhVuc(DropDownListLinhVuc.SelectedValue.ToString());
GridViewBanTin.DataSource = ds.Tables[0];
GridViewBanTin.DataBind();
}
private void SettingDropDownListLinhVuc()
{
DropDownListLinhVuc.AutoPostBack = true;
DropDownListLinhVuc.DataSource = LV_Ctl.ListLinhVuc().Tables[0];
DropDownListLinhVuc.DataTextField = "TenLinhVuc";
DropDownListLinhVuc.DataValueField = "MaLinhVuc";
DropDownListLinhVuc.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (GridViewBanTin.SelectedIndex >= 0)
{
BT_Ctl.DeleteBanTin(GridViewBanTin.DataKeys[GridViewBanTin.SelectedIndex].Value.ToStri
ng());
GetDataForGridViewBanTin();
}
else
{
lblThongBao.Visible = true;
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
if (GridViewBanTin.SelectedIndex >= 0)
{
Session["MaBanTin"] =
GridViewBanTin.DataKeys[GridViewBanTin.SelectedIndex].Value.ToString();
Response.Redirect("CapNhatTin.aspx");

16


lblThongBao.Visible = false;
}
else
{
lblThongBao.Visible = true;
}
}
protected void btnThemTin_Click(object sender, EventArgs e)
{
Response.Redirect("NhapTin.aspx");
}
protected void GridViewBanTin_SelectedIndexChanging(object sender,
GridViewSelectEventArgs e)
{
lblThongBao.Visible = false;
}
protected void GridViewBanTin_PageIndexChanging(object sender,
GridViewPageEventArgs e)
{
GridViewBanTin.PageIndex = e.NewPageIndex;
}
}

24. Tạo file Global.asax và thêm vào biến MaBanTin
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
Session["MaBanTin"]="";
}

25. Copy trang NhapTin.aspx và đổi tên lại thành CapNhatTin.aspx và viết code như sau:
public partial class CapNhapTin : System.Web.UI.Page
{
BanTinController BT_Ctl = new BanTinController();
BanTinInfo BTInfo= new BanTinInfo();
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
GetDataForPage();
}
private void GetDataForPage()
{
BTInfo = BT_Ctl.GetBanTin(Session["MaBanTin"].ToString());
txtMaBanTin.Text=BTInfo.MaBanTin;
txtTieuDe.Text = BTInfo.TieuDe;
txtNoiDungTomTat.Text =BTInfo.NoiDungTomTat;
txtNoiDung.Text = BTInfo.NoiDung;
calendarNgayDangTin.SelectedDate = BTInfo.NgayDangTin;
txtChuThichHinh.Text = BTInfo.ChuThichHinh;
}
private void SaveFileUpload()
{
string strFilename;
if (fileUpload.FileName != "")
{
strFilename = Server.MapPath("Upload\\" + fileUpload.FileName);
fileUpload.PostedFile.SaveAs(strFilename);
}
}
protected void btnLuu_Click(object sender, EventArgs e)

17


{
SetDataForBanTinInfo();
BT_Ctl.UpdateBanTin(BTInfo);
SaveFileUpload();
}
private void SetDataForBanTinInfo()
{
BTInfo.MaBanTin=txtMaBanTin.Text;
BTInfo.TieuDe=txtTieuDe.Text;
BTInfo.NoiDungTomTat = txtNoiDungTomTat.Text;
BTInfo.NoiDung=txtNoiDung.Text;
BTInfo.NgayDangTin=calendarNgayDangTin.SelectedDate;
BTInfo.HinhAnh = fileUpload.FileName;
BTInfo.ChuThichHinh=txtChuThichHinh.Text;
BTInfo.MaLinhVuc = dropDownListLinhVuc.SelectedValue;
}
protected void btnHuyBo_Click(object sender, EventArgs e)
{
txtMaBanTin.Text = "";
txtTieuDe.Text = "";
txtNoiDungTomTat.Text = "";
txtNoiDung.Text = "";
calendarNgayDangTin.SelectedDate = DateTime.Today;
txtChuThichHinh.Text = "";
}
}

26. Chạy và kiểm tra chương trình

***Hết***

18



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×