1. Trang chủ
  2. » Công Nghệ Thông Tin

Ứng dụng kỹ thuật lập trình module 3 lớp của dotnetnuke vào winform

11 508 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 158,5 KB

Nội dung

Kỹ thuật lập trình Ứng dụng kỹ thuật lập trình module Dotnetnuke vào Winform, theo kỹ thuật mô hình 3 lớp: lớp thể hiện giao diện, lớp các thành phần thực hiện công việc, lớp thao tác dữ liệu.Tài liệu này rất đơn giản và thực tế, phù hợp để các bạn vừa nghiên cứu vừa áp dụng vào thực tiễn

Trang 1

HƯỚNG DẪN LẬP TRÌNH WINFORM

THEO MÔ HÌNH 3 LỚP CỦA MODULE DOTNETNUKE

Tác giả: vuathongtin – Bùi Thành Nhân

THÁNG 05/2014

Trang 2

I Mô hình 3 lớp của module DotNetNuke (gọi tắt là 3 lớp DNN)

Lớp thể hiện giao diện

Các thành phần của giao diện

(Windows User Control)

Lớp các thành phần thực hiện công việc

Các thành phần thực thi (Bussiness Components)

Lớp truy xuất/nhập dữ liệu

Lớp truy nhập dữ liệu đa hình

Mô tả truy nhập dữ liệu

(Abstract Data Provider)

Lớp thực thi truy nhập dữ liệu

(Sql Data Provider)

Các khối truy nhập dữ liệu

Mô hình hóa của các đối tượng được thể hiện trong mô hình 3 lớp

Controller Class

Đối tượng điều khiển, sự dụng các phương thức của DataProvider để truy xuất dữ liệu

Info Class

Lớp mô tả các đối tượng lưu trữ thông tin

DataProvider Class

Lớp ảo (abstract) định nghĩa các phương thức truy nhập dữ liệu Lớp

ảo này cho phép phát triển độc lập các mô tả truy nhập dữ liệu

SqlDataProvider Class

Controller

Object

Controller

Object

Info Object

DataProvider Object

DataProvider Object

SQLDataProvider

Object

SQLDataProvider

Procedure Store Procedure

Trang 3

Đối tượng truy nhập dữ liệu thực sự

Store Procedure

Các thủ tục ở CSDL MSSQL server được SqlDataProvider sử dụng

Sử dụng thư viện

Microsoft.ApplicationBlocks.Data.dll

Thư viện các hàm làm việc trực tiếp với CSDL

Quy trình xây dựng project winform 3 lớp DNN:

(Thực nghiệm với bài toán tạo form quản lý danh sách dự án Gồm: tb_duan(duanid,

tenduan,loaiduan,mota,namthuchien,khachhang)

1 Khởi tạo database 2 Tạo Project 3 Xây dựng Object 4 Xây dựng lớp giao diện

1.1.Tạo table

1.2 Tạo các store

procedure

- Tạo các thư mục chứa các Object

- Tạo file App.config

3.1 Data Info 3.2 DataProvider 3.3 SqlDataProvider 3.4 Controller

4.1 Form danh sách (hiện

dữ liệu) 4.2 Form cập nhật (thêm, sửa)

Bước 1: Khởi tạo database nhatkyduan (table: tb_duan, store procedure: pr_duan_them,

pr_duan_sua, pr_duan_xoa, pr_duan_thongtin)

Table

CREATETABLE [dbo].[tb_duan](

[duanid] [bigint] IDENTITY(1,1)NOTNULL,

[loaiduan] [int] NULL,

[tenduan] [nvarchar](200)NULL,

[mota] [ntext] NULL,

[namthuchien] [int] NULL,

[khachhang] [nvarchar](200)NULL

)

Store Procedure

CREATEproc [dbo].[pr_duan_them](

@tenduan nvarchar(200),

@mota ntext,

@loaiduan int,

@namthuchien int,

@khachhang nvarchar(200)

)

AS

BEGIN

INSERTINTO

tb_duan(tenduan,mota,loaiduan,namthuchien,khachhan

g)

createproc [dbo].[pr_duan_xoa](

@duanid bigint

)

AS BEGIN DELETEFROM tb_duan WHERE duanid=@duanid

END GO createproc [dbo].[pr_duan_thongtin](

@duanid bigint

Trang 4

n,@khachhang)

SELECTCAST(SCOPE_IDENTITY()asINT)

END

GO

CREATEproc [dbo].[pr_duan_sua](

@tenduan nvarchar(200),

@mota ntext,

@loaiduan int,

@namthuchien int,

@khachhang nvarchar(200),

@duanid bigint

)

AS

BEGIN

UPDATE tb_duan SET

tenduan=@tenduan,mota=@mota,loaiduan=@loaidua

n,namthuchien=@namthuchien,khachhang=@khachha

ng

WHERE duanid=@duanid

END

GO

)

AS BEGIN SELECT*FROM tb_duan WHERE duanid=@duanid

END GO

Bước 2:

- Xây dựng mới 1 project Winform (Ví dụ: Project name NhatKyDuAn)

- Tạo lần lượt các thư mục: Components, Data, SqlDataProviders, VguiLayers

Đặc tả:

 Components: Chứa các đối tượng Controller (thuộc lớp các thành phần thực hiện công việc)

Ví dụ: DuAnController.cs.

 Data: Chứa các đối tượng InfoObject và DataProvider Object

Ví dụ: DuAnInfo.cs, DataProvider.cs

 SqlDataProviders: Chứa đối tượng SqlDataProvider Object

Ví dụ: SqlDataProvider.cs

 VguiLayers: Chứa các form giao diện người dùng (thuộc lớp thể hiện giao diện)

Ví dụ: frm_duan.cs, frm_duan_capnhat.cs

Bước 3: Xây dựng các đối tượng tương ứng với các thư mục được tạo ở Bước 2.

Trang 5

Bước 3.1: Xây dựng đối tượng Data và DataProvider: nhấn phải chuột vào thư mục Data và lần

lượt tạo 2 Class mới có tên: DuAnInfo.cs và DataProvider.cs

publicclassDuAnInfo

{

publiclong duanid { get; set; }

publicstring tenduan { get; set; }

publicint loaiduan { get; set; }

publicstring mota { get; set; }

publicint namthuchien { get; set; }

publicstring khachhang { get; set; }

public DuAnInfo() { }

public DuAnInfo(long duanid, string tenduan, int loaiduan, string mota, int namthuchien,string khachhang)

{

this.duanid = duanid;

this.tenduan = tenduan;

this.loaiduan = loaiduan;

this.mota = mota;

this.namthuchien = namthuchien;

this.khachhang = khachhang;

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using NhatKyDuAn.Components;

using NhatKyDuAn.Components.Data;

namespace NhatKyDuAn.Data

{

publicabstractclassDataProvider

{

#region Shared/Static Methods

privatestaticDataProvider provider;

// return the provider

publicstaticDataProvider Instance()

{

if (provider == null)

{

conststring assembly = "NhatKyDuAn.SqlDataProviders.SqlDataProvider,NhatKyDuAn"; Type objectType = Type.GetType(assembly, true, true);

provider = (DataProvider)Activator.CreateInstance(objectType);

}

return provider;

}

Trang 6

publicstaticIDbConnection GetConnection()

{

string _connectionString;

_connectionString =

System.Configuration.ConfigurationManager.AppSettings["SiteSqlServer"];

IDbConnection newConnection = new System.Data.SqlClient.SqlConnection();

newConnection.ConnectionString = _connectionString.ToString();

newConnection.Open();

return newConnection;

}

#endregion

#region Du An

publicabstractList<DuAnInfo> duan_danhsach(string tenduan);

publicabstractint duan_them(DuAnInfo DA);

publicabstractint duan_sua(DuAnInfo DA);

publicabstractint duan_xoa(long duanid);

publicabstractDuAnInfo duan_thongtin(long duanid);

protectedvirtualList<DuAnInfo> duan_danhsachFromReader(IDataReader rdr)

{

List<DuAnInfo> LST = newList<DuAnInfo>();

while (rdr.Read())

{

LST.Add(duanFromReader(rdr));

}

return LST;

}

protectedvirtualDuAnInfo duanFromReader(IDataReader rdr)

{

returnnewDuAnInfo(

Convert.ToInt64(rdr["duanid"]),

rdr["tenduan"].ToString(),

Convert.ToInt32(rdr["loaiduan"]),

rdr["mota"].ToString(),

Convert.ToInt32(rdr["namthuchien"]),

rdr["khachhang"].ToString());

}

#endregion

}

}

Bước 3.2: Xây dựng đối tượng Controller: nhấn phải chuột vào thư mục Components, tạo

Class mới có tên: DuAnController.cs

Nội dung class DuAnController:

Trang 7

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using NhatKyDuAn.Components.Data;

using NhatKyDuAn.Data;

namespace NhatKyDuAn.Components

{

publicclassDuAnController

{

publicstaticList<DuAnInfo> duan_danhsach(string tenduan)

{

returnDataProvider.Instance().duan_danhsach(tenduan);

}

publicstaticint duan_them(DuAnInfo DA)

{

returnDataProvider.Instance().duan_them(DA);

}

publicstaticint duan_sua(DuAnInfo DA)

{

returnDataProvider.Instance().duan_sua(DA);

}

publicstaticDuAnInfo duan_thongtin(Int64 duanid)

{

returnDataProvider.Instance().duan_thongtin(duanid);

}

publicstaticint duan_xoa(Int64 duanid)

{

returnDataProvider.Instance().duan_xoa(duanid);

}

}

}

Bước 3.3: Xây dựng đối tượng SqlDataProvider: nhấn phải chuột vào thư mục

SqlDataProvider, tạo mới class SqlDataProvider

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using Microsoft.ApplicationBlocks.Data;

using NhatKyDuAn.Components;

using NhatKyDuAn.Data;

using NhatKyDuAn.Components.Data;

using System.Data.SqlClient;

Trang 8

namespace NhatKyDuAn.SqlDataProviders

{

publicclassSqlDataProvider : DataProvider

{

#region Private Members

privatereadonlystring _connectionString;

#endregion

#region Constructors

public SqlDataProvider()

{

if (string.IsNullOrEmpty(_connectionString))

{

_connectionString =

System.Configuration.ConfigurationManager.AppSettings["SiteSqlServer"];

}

}

#endregion

#region Properties

publicstring ConnectionString

{

get

{

return _connectionString;

}

}

#endregion

#region SqlData Du An

publicoverrideList<DuAnInfo> duan_danhsach(string tenduan)

{

IDataReader rdr = (IDataReader)SqlHelper.ExecuteReader(ConnectionString,

"pr_duan_danhsach", tenduan);

return duan_danhsachFromReader(rdr);

}

publicoverrideint duan_them(DuAnInfo DA)

{

SqlParameter[] parameter = newSqlParameter[5];

parameter[0] = newSqlParameter("@tenduan", DbType.String);

parameter[0].Value = DA.tenduan;

parameter[1] = newSqlParameter("@mota", DbType.String);

parameter[1].Value = DA.mota;

parameter[2] = newSqlParameter("@loaiduan", DbType.Int32);

Trang 9

parameter[2].Value = DA.loaiduan;

parameter[3] = newSqlParameter("@namthuchien", DbType.Int32);

parameter[3].Value = DA.namthuchien;

parameter[4] = newSqlParameter("@khachhang", DbType.String);

parameter[4].Value = DA.khachhang;

return (int)SqlHelper.ExecuteScalar(ConnectionString, "pr_duan_them", parameter);

}

publicoverrideint duan_sua(DuAnInfo DA)

{

SqlParameter[] parameter = newSqlParameter[6];

parameter[0] = newSqlParameter("@tenduan", DbType.String);

parameter[0].Value = DA.tenduan;

parameter[1] = newSqlParameter("@mota", DbType.String);

parameter[1].Value = DA.mota;

parameter[2] = newSqlParameter("@loaiduan", DbType.Int32);

parameter[2].Value = DA.loaiduan;

parameter[3] = newSqlParameter("@namthuchien", DbType.Int32);

parameter[3].Value = DA.namthuchien;

parameter[4] = newSqlParameter("@khachhang", DbType.String);

parameter[4].Value = DA.khachhang;

parameter[5] = newSqlParameter("@duanid", DbType.Int64);

parameter[5].Value = DA.duanid;

returnSqlHelper.ExecuteNonQuery(ConnectionString, "pr_duan_sua", parameter);

}

publicoverrideDuAnInfo duan_thongtin(long duanid)

{

IDataReader rdr = SqlHelper.ExecuteReader(ConnectionString, "pr_duan_thongtin", duanid); DuAnInfo DA = newDuAnInfo();

while (rdr.Read())

{

DA = duanFromReader(rdr);

}

return DA;

}

publicoverrideint duan_xoa(long duanid)

{

returnSqlHelper.ExecuteNonQuery(ConnectionString, "pr_duan_xoa", duanid);

}

#endregion

Trang 10

}

}

Bước 4: Xây dựng lớp giao diện: nhấn phải chuột vào thư mục

 Thiết kế 2 form: frm_duan, frm_duan_capnhat

 Kế thừa các Object được tạo ở Bước 3 để code xử lý 2 form trên

publicvoid duan_danhsach()

{

dgv_duan.AutoGenerateColumns = false;

dgv_duan.DataSource = DuAnController.duan_danhsach(txt_timkiem.Text.Trim());

lbl_tongso.Text = dgv_duan.Rows.Count.ToString();

}

privatevoid btn_luulai_Click(object sender, EventArgs e)

{

if (txt_tenduan.Text.Trim() == "")

{

MessageBox.Show("Chưa nhập tên dự án!");

txt_tenduan.Focus();

}

else

{

string tenduan = txt_tenduan.Text.Trim();

int namthuchien = int.Parse(cbo_namthuchien.Text);

string mota = txt_mota.Text;

DuAnInfo DA = newDuAnInfo ();

DA.tenduan = tenduan;

DA.namthuchien = namthuchien;

DA.loaiduan =0;

DA.mota = mota;

DA.khachhang = txt_khachhang.Text.Trim();

if (duanid == 0)

{

if (DuAnController.duan_them(DA) > 0)

{

if (MessageBox.Show("Đã thêm! Bạn có muốn thêm dự án khác nữa không?", "Chú ý", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)

== System.Windows.Forms.DialogResult.OK)

{

txt_tenduan.Text = "";

cbo_namthuchien.SelectedIndex = 0;

txt_mota.Text = "";

txt_tenduan.Focus();

Trang 11

}

elsethis.Close();

}

}

else

{

DA.duanid = duanid;

if (DuAnController.duan_sua(DA) > 0) {

this.Close();

}

}

}

}

Ngày đăng: 17/07/2014, 13:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w