Sử dụng Transaction trong SQL Server

Có 2 cách để kiểm soát Transaction trong SQL Server
Cách 1: bằng cách kiểm tra biến toàn cục @@ERROR để xác định nếu có lỗi xảy ra thì thực hiện rollback. Đây là cách cổ điển của SQL Server 2000. Điểm bất tiện của nó là sau mỗi câu lệnh SQL, ta phải thực hiện việc kiểm tra giá trị của biến này, để kịp thời rollback.

CREATE PROC For_TransTest
AS
BEGIN
    BEGIN TRANSACTION updatestaff;

    UPDATE aspnet.staff SET fk_department = 30
    WHERE pk_staff = 971;

    IF @@ERROR != 0  -- neu co loi xay ra, rollback 
    BEGIN
        PRINT 'rollback ne';
        ROLLBACK TRAN updatestaff;
    END

    UPDATE aspnet.staff SET fk_department = null
    WHERE pk_staff = 971;

    IF @@ERROR != 0  -- neu co loi xay ra, rollback 
    BEGIN
        PRINT 'rollback ne';
        ROLLBACK TRAN updatestaff;
    END
    ELSE
        COMMIT TRANSACTION updatestaff;

END

Cách 2: Sử dụng lệnh TRY...CATCH, hỗ trợ trên SQL Sever 2005, rất đơn giản và dễ dùng

Ví dụ:

CREATE PROC For_TransTest
AS
BEGIN
    BEGIN TRY

        BEGIN TRANSACTION updatestaff;

        UPDATE aspnet.staff SET fk_department = 30
        WHERE pk_staff = 971;

        UPDATE aspnet.staff SET fk_department = null
        WHERE pk_staff = 971;


        COMMIT TRANSACTION updatestaff;
        PRINT 'commited';
    END TRY
    BEGIN CATCH
        PRINT 'rollback ne';
        ROLLBACK TRAN updatestaff;  
    END CATCH
END

Sử dụng jquery validation để validate cho checkbox

Cho rằng bạn đang buộc người dùng phải check vào 1 trong những checkbox trước khi submit, sau đây là đoạn code snippest giúp bạn làm được điều đó.

Ở đây mình sử dụng thư viện Jquery Validation.

Thêm thư viện:
Chúng ta có thể tải về hoặc include url của thư viện:

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>


 Html makup:

    <form id="form1" runat="server">
    <div id="chkboxes">
        <input type="checkbox" name="bev" value="cream" />With cream<br />
        <input type="checkbox" name="bev" value="sugar" />With sugar<br />
        <input type="checkbox" name="bev" value="sugar" />With salt<br />
    </div>
    <div id="msg">
    </div>
    <input id="btnSubmit" type="submit" value="submit" />
    </form>

 Đầu tiên mình check xem có bao nhiêu checkbox được check trong sự kiện ready của document

        function countChecked() {
            var n = $("input:checked").length;
            $("#msg").text(n + (n <= 1 ? " is" : " are") + " checked!");
        }


Jquery validation cho phép chúng ta thay thế thông điệp lổi khác với message mặc định

        $.validator.addMethod('onecheck', function (value, ele) {
            return $("input:checked").length >= 1;
        }, 'Please Select Atleast One CheckBox')


full code:

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Using the jQuery Validation Plugin to choose atleast one CheckBox before submitting the Form</title>
    <style type="text/css">
        label.error, #msg
        {
            float: none;
            color: red;
            padding-left: .3em;
            vertical-align: top;
        }
    </style>

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
    <script type="text/javascript">
        $.validator.addMethod('onecheck', function (value, ele) {
            return $("input:checked").length >= 1;
        }, 'Please Select Atleast One CheckBox')

        $(document).ready(function () {
            $("#form1").validate({
                rules: {
                    bev: {
                        onecheck: true
                    }
                },
                errorPlacement: function (error, element) {
                    error.appendTo('#msg');
                }
            });
            countChecked();
            $(":checkbox").click(countChecked);
        });
        function countChecked() {
            var n = $("input:checked").length;
            $("#msg").text(n + (n <= 1 ? " is" : " are") + " checked!");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="chkboxes">
        <input type="checkbox" name="bev" value="cream" />With cream<br />
        <input type="checkbox" name="bev" value="sugar" />With sugar<br />
        <input type="checkbox" name="bev" value="sugar" />With sugar<br />
    </div>
    <div id="msg">
    </div>
    <input id="btnSubmit" type="submit" value="submit" />
    </form>
</body>
</html>

JSON in .Net

Bài viết hướng dẫn chuyển đổi(convert) một chuỗi(string) định dạng JSON sang đối tượng (object) của .Net và ngược lại, sử dụng JavaScriptSerializer trong thư viện System.Web.Extensions.

Chúng ta đều biết đối tượng kiểu JSON cực kỳ thuận tiện trong tương tác javascript.
Nhưng khi tương tác với server thông qua Ajax, nó có một hạn chế. Ta ko thể truy xuất sâu hơn các thuộc tính trực tiếp của đối tượng.

Chẳng hạn, ta có đối tượng JSON như sau:

var person = {
     name    : "svincoll",
     address : {
          street : "Le Lai"
          city   : "hcm"
     }
 }

 

sau đó, ta dùng ajax đưa dữ liệu này về server thông qua POST.

 

$.post("jsonDemo.aspx", person);

Hãy xem, ta lấy được gì ở server nhé:



Như vậy, với thuộc tính name ta lấy được giá trị, còn address thì không.
Bởi vì giá trị của address là đối tượng JSON, và browser đã sử dụng hàm toString() trong trường hợp này.

Có lẽ vì điều đó mà bạn nên đọc bài viết này bigsmile

1. Javascript Serialize

Trong Ajax Extensions, có hỗ trợ cho chúng ta một lớp đối tượng JavaScriptSerializer, lớp đối tượng này cho phép ta chuyển đổi một đối tượng C# thành một chuỗi theo định dạng JSON và ngược lại.

Để minh họa điều này, ta sẽ xây dựng hai đối tượng PersonPersonAddress như sau:


Tiếp theo, ta sẽ khởi tạo đối tượng Person, và serialize nó thành chuỗi JSON:



kiểm tra giá trị của biến json, ta được chuỗi JSON như sau:

 

{"Name":"svincoll","Address":{"Street":"Le Lai","City":"hcm"}}

Với chuỗi JSON trên, ta hoàn toàn có thể deserialize để nhận về đối tượng Person ban đầu



Tới đây, việc xử lý dữ liệu phía codebehind (code server) đã xong. Vấn đề mấu chốt là chúng ta cần 1 chuỗi JSON, để từ đó convert qua object.

2. Ajax

Từ browser, chúng ta cần gửi đi một chuỗi JSON, ko phải đối tượng JSON, để server nhận được và chuyển đổi thành object tương ứng.

Việc này không quá khó. Chúng ta có thể viết một hàm riêng, chuyển đổi đối tượng JSON thành chuỗi, hoặc sử dụng các thư viện có sẵn như jQuery JSON

Nguồn: http://my.opera.com/svincoll4/blog/2009/10/18/json-in-net

10 hướng dẫn tạo Form Validation với jQuery

jQuery là một framework mạnh mà bạn nào làm thiết kế website cũng nên tìm hiểu. Sau đây xin giới thiệu với các bạn 10 hướng dẫn làm form kiểm tra thông tin rất hay và đẹp với jQuery.

Các bạn click vào hình mô tả để đến với bài viết hướng dẫn nhé   Khác...

jQuery Validation: Add custom rule for validate

Để tạo thêm một rule trong jQuery Validation plugin, ta làm từng bước như sau:
(Ví dụ sau xây dựng rule kiểm tra tag html)
Xây dựng hàm kiểm tra dữ liệu, hàm nhận vào hai đối số và trả về giá trị bool.

 

function validateScript(value, element){

        var reg = new RegExp("[]+\s*?[>]");
        if( reg.test(value) ){
            //The input data contains words or phrases which are not allowed.;
            return false;
       }
       return true;
}

 

Đặt tên (rule name) cho hàm, tên này sẽ được sử dụng khi user gọi validate, tham số thứ 3 là thông báo lỗi khi hàm kiểm tra dữ liệu bên trên trả về giá trị false.

 

jQuery.validator.addMethod("scriptbadword", validateScriptOrBadWord, "The data contains invalid words.");

Gọi hàm thực thi

 

 

jQuery(function (){
       jQuery.noConflict();
       jQuery('#formid').validate({
            rules : {
                ContactName : "required scriptbadword",
                LastName : "required scriptbadword"
            }
       });
});