Tìm kiếm Blog này

Giấy in nhiệt - Giấy in nhiệt k57 - Giấy in nhiệt k80- Giấy in bill - Giấy in hóa đơn

https://mayinnhiet.wordpress.com/

Chuyên cung cấp giấy in cảm nhiệt dùng cho:
- In bill máy tính  tiền
- Máy in hoá đơn
- Máy in bill dùng trong nhà hàng,
- Quán cafe
- In hóa đơn Siêu thị
- Giấy in bill nhà sách
- Giấy in bill quán karaoke
- Giấy in bill quán ăn, quán nhậu ..
- Giấy in số thứ tự bệnh viện
- Giấy in số ngân hàng, trạm xe 




Chúng tôi xin báo giá giấy in cảm nhiệt với giá ưu đãi như sau: (Rẻ hơn giá thị trường từ 150.000 – 200.000 VNĐ/thùng).

- Chiết khấu 5% khi mua số lượng trên 5 thùng và còn nhiều chương trình khuyến mãi khác….

- Giao hàng miễn phí trong khu vực thành phố Hồ Chí Minh.

- Qúy khách mua lẻ vui lòng liên hệ để có giá tốt nhất.

----------------------------------------------------------------------
MAI HOÀI ANH

Phòng Kinh Doanh

Công ty TNHH DV Tin Học Trí Tuệ Mới

138 Tân Kỳ Tân Quý, Phường Sơn Kỳ , Quận Tân Phú

CN : 3/35 Thành Thái , Phường 14, Quận 10

Phone: 0906625068

Email: hoaianh@trituemoi.net- website: www.trituemoi.net

Sử Dụng Ajax Trong ASP.Net - Làm quen với Ajax qua ví dụ

(Nguồn từ http://zensoft.vn)
Một trong những kỹ thật lập trình đình đám nhất hiện nay mà chúng ta không thể không nghiên cứu. Qua các bài viết này tôi hi vọng sẽ giúp các bạn hiểu được cũng lắm vững các nguyên tắc lập trình cơ bản nhất của Ajax trong môi trường .Net.
AJAX là gì?
AJAX, viết tắt từ Asynchronous JavaScript and XML (JavaScript và XML không đồng bộ), là bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách cắt nhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vì tải đi tải lại toàn bộ trang web. AJAX không phải một công nghệ đơn lẻ mà là sự kết hợp một nhóm công nghệ với nhau. Trong đó, HTML và CSS đóng vai hiển thị dữ liệu, mô hình DOM trình bày thông tin động, đối tượng XMLHttpRequest trao đổi dữ liệu không đồng bộ với máy chủ web, còn XML là định dạng chủ yếu cho dữ liệu truyền dữ liệu và Javacript có nhiệm vụ lắp ráp chúng lại với nhau.
Các bạn có thể tìm hiểu kĩ hơn về Ajax qua bài viết Kỹ thuật lập trình Ajax
Hiển nhiên để phát triển ứng theo phong các AJAX chúng ta cần phải biết về JavaScript, DOM, CSS, HTML, XML… Điều đó thật không dễ dàng gì. Thật may là hiện tại đã có khá nhiều thư viện cho phép chúng ta phát triển ứng dụng AJAX nhanh và đơn giản hơn nhiều. (Chúng ta sẽ tìm hiểu về những thư viện này trong các bài sau ;-) ).
Ví dụ
Trong ví dụ tôi sẽ trình bày sau đây sẽ giúp chúng ta làm quen với cách mà AJAX làm việc, tất nhiên tại ví dụ này chúng ta sẽ không dùng những thư viện xây dựng sẵn.
AjaxEx1.aspx


Code:

Thí dụ về Ajax

Hãy chọn nhóm thư mục
Chọn thư mục:
Chọn bài viết:
AjaxEx1.aspx.cs protected void Page_Load(object sender, EventArgs e) {
ddlSuperCategories.DataSource = SuperCategoriesBF.GetSuperCategoriesAll(); ddlSuperCategories.DataTextField = "Title"; ddlSuperCategories.DataValueField = "SuperCategoryID"; ddlSuperCategories.DataBind(); ddlSuperCategories.Items.Insert(0, new ListItem("Chọn nhóm thư mục...", "0")); // handle change events on client ddlSuperCategories.Attributes.Add("onchange", "getCategories(this.value);"); ddlCategories.Attributes.Add("onchange", "getArticles(this.value);"); ddlArticles.Attributes.Add("onchange", "displayResults();");
} AjaxServer.aspx.cs protected void Page_Load(object sender, EventArgs e) { int superCategoryID=0; if (Request["superCategoryID"] != null) int.TryParse(Request["superCategoryID"], out superCategoryID); int categoryID = 0; if (Request["categoryID"] != null) int.TryParse(Request["categoryID"], out categoryID); // either retrieve cities or class dates if (categoryID != 0) GetArticles(categoryID); else GetCategories(superCategoryID); } /// /// Trả về dữ liệu thư mục bài viết theo chuẩn XML /// /// private void GetCategories(int superCategoryID) { // lấy dữ liệu List categories = CategoriesBF.GetCategoriesBySuperCategoryID(superCategoryID); StringBuilder sb = new StringBuilder(); sb.Append(@""); sb.Append(@""); sb.Append(@"Chọn thư mục..."); foreach (CategoriesBF c in categories) { sb.Append(@""); } sb.Append(@""); Response.Clear(); Response.ContentType = "text/xml"; Response.Write(sb.ToString()); Response.End(); } private void GetArticles(int categoryID) { // lấy dữ liệu List articles = ArticlesBF.GetArticlesPublishedPagedByCategoyID(categoryID, 0, 10); //các bạn có thể hiểu là lấy 10 bài viết đầu tiên trong thư mục có ID = categoryID StringBuilder sb = new StringBuilder(); sb.Append(@""); sb.Append(@""); sb.Append(@"
Chọn bài viết...
"); // note: class is a keyword, therefore prefix with '@' foreach (ArticlesBF a in articles) { sb.Append(@"
"); } sb.Append(@"
"); Response.Clear(); Response.ContentType = "text/xml"; Response.Write(sb.ToString()); Response.End(); }


Click vào đây để xem ví dụ

Hướng dẫn tạo website với Dynamic Theme.

Mình sẽ hướng dẫn từng bước một và chi tiết để các bạn có thể hiểu rõ và làm được.
Trước hết, chúng ta tạo một website mới với công cụ Visual Studio 2005. Đây là giao diện của ứng dụng:

Giao Diện Black
Giao Diện White
Bước thứ 1:
Tạo một thư mục và đặt tên là App_Code. Trong thư mục này ta tạo một Class có tên là Theme.cs
Nội Dung trang đó như sau:
public class Theme
{
private string _name;

// Lấy Tên.
public string Name
{
set
{
_name = value;
}
get
{
return _name;
}
}

// Contractor
public Theme(string name)
{
Name = name;

}
}
Bước 2: Tạo thư mục App_Themes để quản lý các Theme sẽ sử dụng trong ứng dụng của mình. Ở đây, mình tạo 2 Theme có tên là Black và White. Tiếp Theo, ta tạo tiếp một Class mới trong thư mục App_Code có tên là ThemeManager.cs. Class này có nhiệm vụ tìm kiếm và quản lý các Theme có trong thư mục App_Theme. Nó sẽ liệt kê tất cả các Theme tồn tại trong thư mục App_Themes.
public class ThemeManager
{

public static List GetThemes()
{
DirectoryInfo dInfo = new DirectoryInfo(System.Web.HttpContext.Current.Serve r.MapPath("App_Themes"));
DirectoryInfo[] dArrInfo = dInfo.GetDirectories();
List list = new List();

foreach (DirectoryInfo d in dArrInfo)
{
Theme temp = new Theme(d.Name);
list.Add(temp);
}

return list;
}

}
Bước 3:
Tạo một trang Master để sử dụng chung cho tất cả các trang khác trong ứng dụng, đặt tên là Default.Master. trong trang này, chúng ta tạo ra 1 ObjectDataSource, có tên là ThemeDataSource để lấy danh sách các Theme có trong thư mục App_Themes:
Để thay đổi Theme, chúng ta có thể sử dụng DropDownList hoặc RadioButton List. Ở đây mình sử dụng RadioButton List.
Các bạn hãy để ý nhé, với RadionButton List, chúng ta nhớ phải đặt thuộc tính DataSourceID = "ThemeDataSource" để lấy các danh sách Theme. Chúng ta viết 2 sự kiện cho thẻ này:
protected void choiceTheme_DataBound(object sender, EventArgs e)
{
choiceTheme.SelectedValue = Page.Theme;
}
protected void choiceTheme_SelectedIndexChanged(object sender, EventArgs e)
{
Session.Add("MyTheme",choiceTheme.SelectedValue);
Server.Transfer(Request.FilePath);
}
Bước Tiếp Theo: Chúng ta tạo một Class có tên là BasePage.cs để xác định Theme mặc định chúng ta sẽ sử dụng. ở đây, mặc định sẽ là Theme White:
public class BasePage: System.Web.UI.Page
{

protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Session["MyTheme"] == null)
{
Session.Add("MyTheme", "White");
Page.Theme = (string)Session["MyTheme"];
}
else
{
Page.Theme = (string)Session["MyTheme"];
}
}
}
Bước cuối cùng, những trang bạn muốn sử dụng Dynamic Themes chỉ cần kế thừa Lớp basePage là được.
public partial class _Default : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
Ứng dụng Dynamic Theme đã hoàn thành. Bạn có thể tùy biến giao diện cho riêng mình với việc thay đổi Stylesheet riêng với BlackStyle.css và WhiteStyle.css. Bạn có thể download mã nguồn của ứng dụng này tại đây.
Theo zensopft.vn

Sử dụng Ajax trong lập trình ASP.NET

Ajax ngày càng được sử dụng rộng rãi, nó giúp xoá mờ khoảng cách giữa máy tính (desktop) và Internet. Tác giả Phạm Công Định đã có bài giới thiệu tổng quát về kỹ thuật lập trình web sử dụng Ajax, tiếp tục chủ đề này, trong bài viết này tôi giới thiệu một công cụ phát triển ứng dụng kiểu Ajax với ASP.NET.

Ajax.NET

Ajax.NET là thư viện Ajax cho .NET được phát triển bởi tác giả người Đức tên là Michael Schwarz ( \n info@schwarz-interactive.deĐịa chỉ thư điện tử này đang được bảo vệ khỏi chương trình thư rác, bạn cần bật Javascript để xem nó Địa chỉ thư điện tử này đang được bảo vệ khỏi chương trình thư rác, bạn cần bật Javascript để xem nó ), mục đích nhằm giúp lập trình viên .NET dễ dàng khai thác sức mạnh của Ajax trong các ứng dụng web của mình. Thư viện này được cung cấp miễn phí trên Internet, bạn có thể yêu cầu tác giả cho tải về cả mã nguồn nếu muốn. Thư viện Ajax.NET hiện cũng được phát triển dưới một dự án nguồn mở tên là BorgWorX Ajax.NET (http://www.borgworx.net/) với nhiều chức năng mở rộng. Ở đây tôi chỉ đề cập tới phiên bản Ajax.NET đầu, sau khi làm quen với thư viện này bạn có thể dễ dàng khám phá phiên bản mở rộng trong dự án nguồn mở trên, thậm chí tham gia dự án này.



Ajax.NET giúp lập trình viên sử dụng Ajax mà không phải bận tâm đến mã lệnh tương tác trực tiếp với các đối tượng XMLHttpRequest, xử lý dữ liệu XML, DOM. Bằng cách sử dụng những khả năng của môi trường lập trình .NET như HttpHandler, reflection, attributes... nó tự động sinh ra những mã lệnh cần thiết giúp việc tương tác giữa client/server hoàn toàn "trong suốt" cũng như đơn giản hoá việc gọi hàm, xử lý những dữ liệu phức tạp như mảng, bảng, đối tượng trên phía client.

Để hiểu rõ về cách hoạt động cũng như sử dụng Ajax.NET trong một ứng dụng ASP.NET, tôi trình bày từng bước thực hiện một ứng dụng minh hoạ đơn giản. Ứng dụng là một form đăng ký thành viên như chúng ta thường gặp trên các diễn đàn, hoặc đăng ký tài khoản e-mail... Nguyên tắc hoạt động của form là mỗi khi có thành viên mới đăng ký sẽ sử dụng Ajax để kiểm tra xem tên (username) đã có chưa và hiển thị danh sách các thành phố dựa trên quốc gia mà thành viên sinh sống. Các thay đổi sẽ thực hiện ở "hậu trường" mà không phải thực hiện nạp lại toàn bộ trang web hay lưu tạm một lượng lớn dữ liệu ở client như cách thông thường.

Bạn có thể tham khảo ứng dụng minh hoạ của bài viết này tại http://www.mobicolors.com/Tiendq/AjaxDemo/, file zip chứa toàn bộ mã nguồn của ứng dụng cũng có thể tải về từ địa chỉ trên. Ứng dụng này được xây dựng với Visual Studio 2005 phiên bản CTP 09/2005, sử dụng ngôn ngữ C#, tuy nhiên các kỹ thuật trình bày ở đây sẽ không có gì khác biệt khi sử dụng với VB.NET hoặc Visual Studio .NET 2003.

Cài đặt ban đầu

Trước tiên cần tạo một website mới trong VS2005, sau đó bạn tạo một tham chiếu (reference) tới thư viện Ajax.NET (file AjaxPro.dll nếu sử dụng với VS.NET 2003, hoặc file AjaxPro.2.dll nếu là VS2005). Thư viện Ajax.NET Professional sử dụng trong bài viết này là phiên bản mới nhất 5.11.4.2, có thể tải về từ http://www.schwarz-interactive.de.

Tiếp theo, cài đặt HttpHandler của Ajax.NET vào website vừa tạo bằng cách thêm các dòng sau đây vào file Web.config (nếu sử dụng VS2005 bạn phải tự thêm file này vào website).






type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>


...


Các bước trên chỉ cần thực hiện một lần với một website, sau đó chúng ta chuyển sang phần khai báo và viết các hàm xử lý trên phía server.

Xây dựng các hàm Ajax phía server

Nhìn chung việc xây dựng các hàm để xử lý những yêu cầu từ phía client không có gì khác so với các các quy định của .NET, ngoại trừ một việc là những hàm này sẽ được "đánh dấu" bằng một thuộc tính tên là AjaxMethodAttribute và có một số hạn chế sẽ được trình bày ở phần sau. Dưới đây là khai báo của hàm CheckAvailablity sử dụng trong ứng dụng để kiểm tra xem một username đã được đăng ký chưa. Để tập trung vào chủ đề chính, tôi chỉ đơn giản lưu username vào một biến session, như vậy là trong cùng một session sẽ không đăng ký được hai thành viên có username giống nhau.

[AjaxPro.AjaxMethod]

public bool CheckAvailablity(string userName)
{
return (null == Session[userName]);
}

Hàm CheckAvailability hoàn toàn có thể được sử dụng lại trong các hàm khác ở phía server mà không phải thay đổi gì cả, ví dụ hàm này được dùng để kiểm tra username khi người sử dụng nhấn vào nút Sign Up, phát sinh sự kiện postback gửi dữ liệu về xử lý trên server:

protected void btnSignUp_Click(object sender, EventArgs e)
{
if (CheckAvailablity(txtUserName.Text))
{
// register new user...
}
// ...
}

Cũng tương tự cách khai báo như trên, chúng ta có hàm GetStateList dùng để trả về danh sách các thành phố của quốc gia tương ứng mỗi khi người sử dụng thay đổi tên quốc gia ở phía client. Hàm này trả về một đối tượng kiểu DataTable, tuy nhiên với sự hỗ trợ của Ajax.NET sẽ không có khó khăn gì để xử lý và hiển thị dữ liệu này trên form ở phía client.

[AjaxPro.AjaxMethod]

public DataTable GetStateList(int countryIndex)
{
DataTable dt = new DataTable();
dt.Columns.Add("StateCode", typeof(string));
dt.Columns.Add("StateName", typeof(string));
// populate state list
return dt;
}

Cuối cùng, để các hàm trên có thể được gọi từ phía client thì chúng ta cần phải đăng ký với Ajax.NET. Sau khi đăng ký với Ajax.NET, thường thực hiện trong hàm xử lý sự kiện Page_Load của trang web, Ajax.NET sẽ tự động sinh ra các mã lệnh JavaScript cần thiết của các hàm này ở phía client. Khi các hàm ở client được gọi thực hiện, dữ liệu sẽ chuyển tới các hàm tương ứng trên server để xử lý và trả về kết quả sau đó.

public partial class Tiendq_AjaxDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Tiendq_ AjaxDemo));
if (false == IsPostBack)
{
// ...
}
}
// ...
}

Sử dụng hàm Ajax ở client

Sau khi xây dựng xong các hàm Ajax phía server, chúng ta có thể sử dụng các hàm này ở client (mã lệnh viết bằng JavaScript) với cú pháp như đã khai báo ở phía server (mã lệnh viết bằng C#), việc gọi hàm có thể thực hiện đồng bộ (synchronous) hoặc bất đồng bộ (asynchronous). Khi gọi hàm theo kiểu synchronous sẽ nhận được dữ liệu trả về tức thời (hoặc phải chờ tuỳ theo tốc độ của kết nối tới server), khi gọi hàm theo kiểu bất đồng bộ (asynchronous) thì dữ liệu sẽ được trả về qua một hàm callback, đoạn mã lệnh thực hiện gọi hàm trong trường hợp này sẽ tiếp tục thực hiện và không cần chờ dữ liệu trả về từ phía server. Hàm callback sẽ được gọi khi có dữ liệu từ server trả về sau đó.

Gọi hàm theo kiểu đồng bộ:

function OnCheckAvailablity(userName)
{
var res = Tiendq_AjaxDemo.CheckAvailablity(userName);
alert(res.value);
}

Gọi hàm theo kiểu bất đồng bộ:

function OnCheckAvailablity(userName)
{
Tiendq_AjaxDemo.CheckAvailablity(userName,
OnCheckAvailablity_Callback);
}

function OnCheckAvailablity_Callback(res)
{
if (null != res.error)
{
alert("Error message goes here!");
return;
}

if (res.value)
{
// process data
}

else
{
// raise error
}
}

Trong cả hai trường hợp gọi hàm trên, dữ liệu trả về là một đối tượng có cấu trúc như sau:


Tên trường

Mô tả

Value

Dữ liệu trả về khi gọi thực hiện hàm phía server, kiểu dữ liệu thực sự phụ thuộc vào khai báo hàm phía server (có thể là chuỗi ký tự, số nguyên, mảng,...).

Error

Thông báo lỗi nếu có.

Request

Dữ liệu trả về của đối tượng XMLHttpRequest, trường hợp muốn lấy thêm các thông tin trả về khác. Xem tài liệu về đối tượng XMLHttpRequest để biết chi tiết.

Context

Tham chiếu tới đối tượng phía client.

Sau đây sẽ là phần mã lệnh gọi thực hiện các hàm CheckAvailablity và GetStateList ở phía client mà chúng ta đã khai báo ở phần trên. Hàm CheckAvailablity sẽ được gọi thực hiện khi người sử dụng nhấn vào nút Check để kiểm tra username muốn đăng ký đã tồn tại chưa, hàm GetStateList được gọi mỗi khi người sử dụng chọn quốc gia khác nhau để cập nhật lại danh sách thành phố của quốc gia đó:

function OnCheckAvailablity(userName)
{
if (userName.length > 0)
Tiendq_AjaxDemo.CheckAvailablity(userName,
OnCheckAvailablity_Callback);
else
alert("User name is required field.");
}

function OnCheckAvailablity_Callback(res)
{
if (null != res.error)
{
alert("Error message goes here!");
return;
}

if (res.value)
{
document.all("lblCheckStatus").innerHTML = "" + document.forms[0].txtUserName.value + " is available."
document.all("lblCheckStatus").className = "cssAvailable";
}
else
{
document.all("lblCheckStatus").innerHTML = "" + document.forms[0].txtUserName.value + " is not available."
document.all("lblCheckStatus").className = "cssNotAvailable";
}
}

function OnSelectCountry(countryIndex)
{
if (countryIndex > 0)
Tiendq_AjaxDemo.GetStateList(countryIndex, GetStateList_Callback);
else
{
ResetStateList();
document.forms[0].cboStates.disabled = true;
}
}

function GetStateList_Callback(res)
{
if (null != res.error)
{
alert("Error message goes here!");
return;
}

var dt = res.value;

if ((null != dt) && ("object" == typeof(dt)))
{
document.forms[0].cboStates.disabled = false;
ResetStateList();

var oItem = null;

for (var i = 0; i < dt.Rows.length; ++ i)
{
oItem = document.createElement("OPTION");
oItem.text = dt.Rows[i].StateName;
oItem.value = dt.Rows[i].StateCode;
document.forms[0].cboStates.add(oItem);
}
}
}

Nhờ có Ajax.NET, ở đoạn mã lệnh JavaScript trên kiểu dữ liệu phức tạp DataTable trả về từ hàm GetStateList có thể xử lý dễ dàng theo cách quen thuộc như dùng ngôn ngữ của .NET (C#, VB.NET). Hoàn toàn không cần thao tác với XML, hay DOM.

Một số chú ý

Ở ứng dụng này tôi mới chỉ minh hoạ trường hợp gọi hàm được khai báo trong cùng một lớp của trang web, trường hợp khai báo hàm trong một Web User Control hoặc trong một lớp khác thì cần phải đăng ký với Ajax.NET như sau.

Khai báo đăng ký Ajax.NET cho Web User Control, trong đó WebUserControl1 là tên của lớp user control có các hàm sử dụng Ajax:

AjaxPro.Utility.RegisterTypeForAjax(typeof(WebUser Control1), this.Page);
Khai báo đăng ký với Ajax.NET cho lớp Class1 có các hàm sử dụng Ajax:

AjaxPro.Utility.RegisterTypeForAjax(typeof(Class1) );
Tương tự, nếu kiểu dữ liệu trả về là một đối tượng tự xây dựng thì ta cũng phải đăng ký như Class1 ở trên.

Như đã đề cập ở phần trên của bài viết, có một số hạn chế khi xây dựng các hàm Ajax để gọi từ phía client cần phải chú ý:

• Để truy cập các biến Request, Response, Session, Cache... cần phải sử dụng thông qua biến HttpContext.Current.

• Nếu muốn hàm Ajax sử dụng các biến lưu trong session thì phải chỉ rõ khi khai báo thuộc tính AjaxMethodAttribute. Ví dụ hàm CheckAvailablity ở trên cần phải được khai báo đúng như sau:

AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequire ment.Read)]

public bool CheckAvailablity(string userName)
{
return (null == Session[userName]);
}

Trong đó HttpSessionStateRequirement là một enum định nghĩa các kiểu truy nhập vào biến session mà hàm CheckAvailability sẽ sử dụng.

• Khi hàm Ajax được gọi sẽ không phát sinh ra sự kiện postback ở phía server, do đó hàm xử lý sự kiện Page_Load cũng sẽ không được gọi, và hàm Ajax không thể truy cập các control có trên trang web (server control).

Ứng dụng đơn giản trên chỉ là minh hoạ cho việc sử dụng thư viện Ajax.NET với ASP.NET, còn nhiều tính năng nữa của thư viện này chưa trình bày được trong phạm vi bài viết như caching, hỗ trợ chuyển đổi kiểu dữ liệu, context... Bạn có thể tự tìm hiểu chi tiết sau khi đã làm quen với thư viện này.

Lời kết

Bản thân Ajax là một khái niệm mới và thư viện Ajax.NET vẫn đang còn được phát triển, nên còn một số hạn chế cũng như những thiếu sót trong tài liệu. Tuy nhiên nếu yêu cầu của ứng dụng không quá phức tạp thì nó hoàn toàn có thể đáp ứng tốt, giúp lập trình viên giảm đáng kể công sức so với sử dụng trực tiếp đối tượng XMLHttpRequest. Thậm chí chúng ta có thể sửa đổi mã nguồn của thư viện này để đáp ứng yêu cầu riêng của mình nếu cần thiết. Nếu gặp vấn đề trong khi sử dụng thư viện này, bạn đọc có thể tham gia vào nhóm thảo luận Ajax.NET tại http://groups.google.com/group/Ajaxpro để tìm thông tin trợ giúp cũng như chia sẻ kinh nghiệm của mình.

Lập trình linQ kết nối sqlserver 1 lớp

Linq to sql – 1 layer
Linq là một công nghệ mới của Microsoft, nó rất dễ sử dụng cho việc truy vấn dữ liệu từ cơ sở dữ liệu. Dưới đây là Demo đơn giản Linq-1Layer về các thao tác : Load, Insert, Update, Delete trên bảng Region của cơ sở dữ liệu Northwind. Giúp các bạn nắm rõ hơn về cách sử dụng Linq.
Cách thực hiện :
1/ Sử dụng Visual Studio 2008 , tạo một ứng dụng Winform, trên cửa sổ Solution Explorer,Click phải vào ứng dụng chọn Add---->New Item---->LINQ to SQL Classes.


2/ Click chọn bảng Region từ Server Explorer để kết nối với CSDL và Save lại ứng dụng.


Tạo Form như hình vẽ :

3/


4/Ta tiến hành code cho các button như sau :
Button Load :
Tạo hàm Load_Data() và button Load gọi lại hàm đó.


Button Add :


Button Update :



Button Delete :


Kết quả như mong muốn .


Như vậy là hoàn thành, các bạn hãy thử xem Linq như thế nào ?

Tự học LinQ bằng tiếng việt

Đây là bài viết đầu tiên trong loạt bài có chủ đề “LINQ to SQL”, các bài này sẽ cho bạn một cái nhìn khái quát, giúp bạn làm quen với LINQ, một trong những công nghệ mới có trong .NET 3.5.
Loạt bài này được dựa trên loạt Tutorial của ScottGu (http://weblogs.asp.net/scottgu).

LINQ to SQL là gì?

LINQ to SQL là một phiên bản hiện thực hóa của O/RM (object relational mapping) có bên trong .NET Framework bản “Orcas” (nay là .NET 3.5), nó cho phép bạn mô hình hóa một cơ sở dữ liệu dùng các lớp .NET. Sau đó bạn có thể truy vấn cơ sở dữ liệu (CSDL) dùng LINQ, cũng như cập nhật/thêm/xóa dữ liệu từ đó.
LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP). Nó cũng cung cấp một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của dữ liệu và các quy tắc vào trong mô hình dữ liệu của bạn.
Mô hình hóa CSDL dùng LINQ to SQL:

Visual Studio “Orcas” đã tích hợp thêm một trình thiết kế LINQ to SQL như một công cụ dễ dàng cho việc mô hình hóa một cách trực quan các CSDL dùng LINQ to SQL. Bài viết sau sẽ đi sâu hơn vào cách dùng trình thiết kế này (bạn cũng có thể xem đoạn video này để xem cách tôi tạo một mô hình LINQ to SQL).
Bằng cách dùng trình thiết kế LINQ to SQL, tôi có thể dễ dàng tạo một mô hình cho CSDL mẫu “Northwind” giống như dưới đây:

Mô hình LINQ to SQL ở trên định nghĩa bốn lớp thực thể: Product, Category, Order và OrderDetail. Các thuộc tính của mỗi lớp ánh xạ vào các cột của bảng tương ứng trong CSDL. Mỗi instance của một lớp biểu diễn một dòng trong bảng dữ liệu.
Các mũi tên giữa bốn lớp thực thể trên biểu diễn quan hệ giữa các thực thể khác nhau, chúng được tạo ra dựa trên các mối quan hệ primary-key/foreign-key trong CSDL. Hướng của mũi tên chỉ ra mối quan hệ là một - một hay một - nhiều. Các thuộc tính tương ứng sẽ được thêm vào các lớp thực thể trong các trường hợp này. Lấy ví dụ, lớp Category ở trên có một mối quan hệ một nhiều với lớp Product, điều này có nghĩa nó sẽ có một thuộc tính “Categories” là một tập hợp các đối tượng Product trong Category này. Lớp Product cũng sẽ có một thuộc tính “Category” chỉ đến đối tượng ”Category” chứa Product này bên trong.
Bảng các phương thức bên tay phải bên trong trình thiết kế LINQ to SQL ở trên chứa một danh sách các SP để tương tác với mô hình dữ liệu của chúng ta. Trong ví dụ trên tôi đã thêm một thủ tục có tên “GetProductsByCategory”. Nó nhận vào một categoryID và trả về một chuỗi các Product. Chúng ta sẽ xem bằng cách nào có thể gọi được thủ tục này trong một đoạn code bên dưới.
Tìm hiểu lớp DataContext
Khi bạn bấm nút “Save” bên trong màn hình thiết kế LINQ to SQL, Visual Studio sẽ lưu các lớp .NET biểu diễn các thực thể và quan hệ bên trong CSDL mà chúng ta vừa mô hình hóa. Cứ mỗi một file LINQ to SQL chúng ta thêm vào solution, một lớp DataContext sẽ được tạo ra, nó sẽ được dùng khi cần truy vấn hay cập nhật lại các thay đổi. Lớp DataContext được tạo sẽ có các thuộc tính để biểu diễn mối bảng được mô hình hóa từ CSDL, cũng như các phương thức cho mỗi SP mà chúng ta đã thêm vào.
Lấy ví dụ, dưới đây là lớp NorthwindDataContext được sinh ra dựa trên mô hình chúng ta tạo ra ở trên:

Các ví dụ LINQ to SQL

Một khi đã mô hình hóa CSDL dùng trình thiết kế LINQ to SQL, chúng ta có thể dễ dàng viết các đoạn lệnh để làm việc với nó. Dưới đây là một vài ví dụ về các thao tác chung khi xử lý dữ liệu:
1) Lấy các Product từ CSDL

Đoạn lệnh dưới đây dùng cú pháp LINQ để lấy về một tập IEnumerable các đối tượng Product. Các sản phẩm được lấy ra phải thuộc phân loại “Beverages”:
C#:

VB:

2) Cập nhật một sản phẩm trong CSDL

Đoạn lệnh dưới đây cho thấy cách lấy một sản phẩm, cập nhật lại giá tiền và lưu lại CSDL.
C#:

VB:

3) Chèn thêm một phân loại mới và hai sản phẩm vào CSDL

Đoạn mã dưới đây biểu diễn cách tạo một phân loại mới, và tạo hai sản phẩm mới và đưa chúng vào trong phân loại đã tạo. Cả ba sau đó sẽ được đưa vào cơ sở dữ liệu.
Chú ý rằng tôi không cần phải tự quản lý các mối quan hệ primary key/foreign key, thay vào đó, tôi chỉ đơn giản thêm các đối tượng Product vào tập hợp Products của đối tượng category, và rồi thêm đối tượng category vào tập hợp Categories của DataContext, LINQ to SQL sẽ biết cách thiết lập các giá trị primary key/foreign key một cách thích hợp.
C#

VB:

4) Xóa các sản phẩm

Đoạn mã sau sẽ biểu diễn cách xóa tất cả các sản phẩm Toy khỏi CSDL:
C#:

VB:

5) Gọi một thủ tục

Đoạn mã dưới đây biểu diễn cách lấy các thực thể Product mà không dùng cú pháp của LINQ, mà gọi đến thủ tục “GetProductsByCategory” chúng ta đã thêm vào trước đây. Nhớ rằng một khi đã lấy về kết quả, tôi có thể cập nhật/xóa và sau đó gọi db.SubmitChanges() để cập nhật các thay đổi trở lại CSDL.
C#:

VB:

6) Lấy các sản phẩm và phân trang

Đoạn mã dưới đây biểu diễn cách phân trang trên server như một phần của câu truy vấn LINQ. Bằng cách dùng các toán tử Skip() và Take(), chúng ta sẽ chỉ trả về 10 dòng từ CSDL - bắt đầu từ dòng 200.
C#:

VB:

Tổng kết

LINQ to SQL cung cấp một cách hay, rõ ràng để mô hình hóa lớp dữ liệu trong ứng dụng của bạn. Một khi đã định nghĩa mô hinh dữ liệu, bạn có thể dễ dàng thực hiện các câu truy vấn cũng như cập nhật, xóa, sửa dữ liệu một cách hiệu quả.
Hi vọng những hướng dẫn và ví dụ mẫu ở trên đã giúp bạn làm quen với LINQ. Tôi sẽ tiếp tục các bài viết này để giúp bạn khám phá LINQ to SQL một cách chi tiết hơn. __________

Cắt Ghép Các Tập Tin âm Thanh Bằng Tiện ích Có Sẵn Trong Windows Xp

Nếu bạn muốn cắt nhỏ hoặc ghép nối các tập tin Audio và Movie giúp cho việc lưu trữ và xử lý tốt hơn . Bạn không cần phải tải về thêm bất kỳ chương trình nào cả Vì trong Windows XP đã có tích hợp sẵn một tiện ích khá hay có khả năng làm được công việc này . Đó là tiện ích Windows Movie Maker ( WMM ) ( All Programs > Accessories > Windows Movie Maker hoặc Menu Start > Run > moviemk.exe ) .

Cắt tập tin âm thanh , video

Để cắt một File Video và âm thanh , bạn cần qua các bước sau :

Bước 1 : Vào Menu File > Import để nhập tập tin nguồn vào . WMM hỗ trợ khá nhiều định dạng Audio và Movies như asf , au , avi , dat , m1v , mp2 , mp3 , mpeg , snd ,wma , wav …

Bước 2 : Kéo và thả tập tin cần cắt nhỏ vào thanh StoryBoard / TimeLine phía dưới cửa sổ chương trình

Bước 3 : Kéo đến vị trí đầu đoạn phim , âm thanh bạn cần trích và kéo đến vị trí cuối đoạn . Sau đó nhấn nút để nghe thử đoạn trích .

Bước cuối cùng : Sau khi đã hài lòng , bạn vào Menu File > Save Movies . Hộp thoại Save Movie xuất hiện , Trong phần setting bạn có thể tùy ý chọn chất lượng là Low , Medium hay High quality ( Nên nhớ chất lượng càng cao thì dung lượng tập tin càng khổng lồ ) . Phần Display Information , điền vào Title ( tiêu đề ) Author ( Tác giả ) Date ( ngày tạo ) Description ( mô tả ) … nếu cảm thấy cần thiết . Sau đó nhấn Ok và chọn nơi lưu tập tin . Lưu ý : Windows Movie Maker chỉ hỗ trợ lưu dưới định dạng là WMV mà thôi .

Ngoài ra Windows Movie Maker còn có khả năng tự động cắt nhỏ thành nhiều đoạn theo thời lượng ( tính bằng giây ) . Để WMM tự động chia bài nhạc thành nhiều đoạn có cùng thời lượng là 20 giây , bạn vào Menu View > Options . Trong hộp thoại Options , bạn đánh dấu chọn vào Ô kiểm “ Automatically create clips “ , nhập thời lượng của mỗi đoạn vào “ Default imported photo duration ( seconds ) : “ ( Ở đây tôi nhập vào 20 giây ) . Sau đó nhấn OK . Từ nay , sau khi Import bất kì tập tin audio hay Video nào , WMM luôn tự chia nhỏ tập tin thành nhiều đoạn với mỗi đoạn đều dài 20 giây .

Ghép nối các tập tin âm thanh , video

Để ghép nhiều tập tin , đoạn nhạc vào thành một tập tin duy nhất . Tương tự như phần cắt nhỏ , bạn phải Import các tập tin , kéo và thả những tập tin cần nối vào StoryBoard / TimeLine và sau đó là lưu lại . Thế là xong . Quá dễ phải không nào ?

Bài Tập Cấu Trúc Dữ Liệu Và Giải Thuật

có một số bài tập về cấu trúc dữ liệu và giải thuật ....
Đề bài tập: http://www.mediafire.com/file/j2g4myh5mtj/De

Thuật Toán: http://www.mediafire.com/?sharekey=5...4e75f6e8ebb871
Bài tập này là trong quá trình học tập của mình ...mình vừa kết thúc môn này xong ...rãnh ..nên upload lên cho mấy bạn ..hy vọng sẽ giúp ích cho mấy bạn .

Crack win vista mọi phiên bản, kể cả khi win đã bị block không vào được windows chỉ xuất hiện một màn hình đỏ chói

Hôm nay rãnh tí thời gian, Admin mình ngồi viết một bài theo kinh nghiệm từng trải cho anh em thuthuatpc.info tham khảo và bạn hãy hướng dẫn bạn bè khắc phục khi win đã bị block chỉ có màn hình đỏ lè và mấy dòng chữ báo đã quá hạn sử dụng và bạn quên key active

+ Trường hợp 1: mới cài win vista mà chưa có key

- Đầu tiên các bạn tắt chức năng User Account Control (UAC) bằng cách vào

Start -> Setting -> Control Panel -> User Accounts And Family Safety -> User Accounts

->Turn User Account Control on or off -> Bỏ dấu chọn rồi bấm "OK"

* Bắt đầu Crack:

- Copy thư mục 1 và 2 vào ổ cứng

- Vào thư mục 1, bấm phải chuột vào file "royal.inf" chọn "Install"

- Khởi động máy lại.

- Vào tiếp thư mục 2 chạy 1 file .cmd tương ứng với phiên bản Windows mà bạn đã cài đặt

Ví dụ:
- Cài Phiên bản Windows Vista Ultimate thì chỉ chạy file "Ultimate.cmd"
- Cài Phiên bản Windows Vista Business thì chỉ chạy file "Business.cmd"
- Cài Phiên bản Windows Vista Home Basic thì chỉ chạy file "Home Basic.cmd"
- Cài Phiên bản Windows Vista Home Premium thì chỉ chạy file "Home Premium.cmd"

Sau khi Crack thành công, các bạn kiểm tra bằng cách phải chuột vào My Computer -> chọn Properties
-> nhìn xuống dòng cuối cùng của cửa sổ sẽ thấy dòng chữ " Windows is already activated"

+ Trường hợp 2: Do key đã hết hạn hay Ghost lại máy, không vào được win, chỉ có màn hình đỏ lè lẹt

Khi mới mở máy và vào màn hình đỏ kia nó sẽ có một cái nút ấn bạn click vào đó, nó sẽ mở trình duyệt web của bạn ra, bạn cứ để nó mở cả khi nhà bạn không có mạng. Sau khi mở lên cái gì trong đó bạn không cần quan tâm, bạn vào thanh gõ địa chỉ gõ vào dòng sau: c:\windows\explorer.exe Nó hỏi bạn có Save file không?

Lưu ý: - Nếu trình duyệt là IE thì bạn cho Run
- Nếu là Firefox thì chon save và chọn nơi lưu, sau đó ấn phải vào tên tập tin vừa save chọn Open

Sao khi mở được cửa sổ explorer bạn sẽ thấy được các thư mục, bạn download cái crack mình cung cấp chép dzô USB hay từ cửa sổ đó bạn mở trình duyệt lên và download về máy, giải nén ra và làm như trường hợp 1 (lưu ý: trong file down về đã có hướng dẫn)

Download: http://www.thuthuatpc.info/upload/Crack_for_Vista(thuthuatpc.info).rar
Pass giải nén: thuthuatpc.info

Phần mềm Tổng Hợp(auto reg regedit,auto shutdow,tắt/mở chat nhiều nick,chup ảnh màng hình)


Phần mềm Tổng Hợp(auto reg regedit,auto shutdow,tắt/mở chat nhiều nick,chup ảnh màng hình)

Download: http://www.thuthuatpc.info/upload/tonghop(thuthuatpc.info).rar
Pass giải nén: thuthuatpc.info