Thursday, July 21, 2016

Ext.NET cùng Bin- Events- Overview

Summary of DirectEvents

(Tóm tắt các sự kiện trực tiếp)

Các sự kiện mỗi ví dụ sau sẽ kích hoạt yêu cầu sự kiện Ajax lên máy chủ và trả về một thông báo cho trình duyệt.

Ví dụ 1 các bạn xem ở đây nhé! Bin sẽ giải thích cho các bạn hiểu từng phần trong ví dụ!

Đầu tiên Bin sẽ gửi cho bạn xem code của tất cả các ví dụ nhé!

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<script runat="server">
    // Hàm trên server xử lý các sự kiện
    protected void UpdateTimeStamp(object sender, DirectEventArgs e)
    {
        X.Msg.Notify("The Server Time is: ", DateTime.Now.ToLongTimeString()).Show();
    }
</script>

<!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>DirectEvents Summary - Ext.NET Examples</title>
    <link href="../../../../resources/css/examples.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
        .box {
         width  : 100px;
         height : 50px;
         border : 1px solid #000;
                cursor : pointer;
         text-align       : center;
         margin-bottom    : 4px;
         background-color : white;
        }
        .red  {
         color  : #fff;
                cursor : default;
         background-color : red; 
        }
        .blue  {
         color : #fff;
         background-color : blue; 
        }
    </style>
</head>
<body>
    <form runat="server">
        <ext:ResourceManager runat="server">
            <CustomDirectEvents>
                <ext:DirectEvent Target="Button2" OnEvent="UpdateTimeStamp" />
                <ext:DirectEvent Target="Button3" OnEvent="UpdateTimeStamp" />
                <ext:DirectEvent Target="Span1" OnEvent="UpdateTimeStamp" />
                <ext:DirectEvent Target="${div.box:not(div.red)}" OnEvent="UpdateTimeStamp" />
            </CustomDirectEvents>
        </ext:ResourceManager>
        <h1>Summary of DirectEvents</h1>
        <p>The action of each of the following samples will trigger a DirectEvent Ajax request to the server and return a Notification Window to the browser.</p>
        // Ví dụ Button 1:
        <h2>Add a &lt;Click> DirectEvent to &lt;ext:Button></h2>
        <ext:Button ID="Button1" runat="server" Text="Click Me" OnDirectClick="UpdateTimeStamp" />
        // Ví dụ Button 2:
        <h2>Add a &lt;Click> DirectEvent with confirmation to &lt;ext:Button></h2>
        <ext:Button ID="Button4" runat="server" Text="Click Me">
            <DirectEvents>
                <Click OnEvent="UpdateTimeStamp">
                    <Confirmation ConfirmRequest="true" Title="Title" Message="Sample Confirmation Message..." />
                </Click>
            </DirectEvents>
        </ext:Button>
        // Ví dụ Button 3:  
        <h2>Add a Click DirectEvent to &lt;asp:Button></h2>
        <asp:Button ID="Button2" runat="server" Text="Click Me" />
        // Ví dụ Button 4:
        <h2>Add a Click DirectEvent to a standard html &lt;input> button</h2>
        <input id="Button3" type="button" value="Click Me" />
        // Ví dụ Button 5:
        <h2>Add a Click DirectEvent to html &lt;span> element</h2>
        <span id="Span1" style="cursor: pointer;">*Click Me*</span>
        <h2>Add a Click DirectEvent to several html &lt;div> elements by using a Target Query</h2>
        <p>By using a Target Query we can attach the same DirectEvent (or Listener) to several html elements or Controls and fire a server-side event.</p>
        <p>The target(s) do not require an "id" and do not need a runat="server" attribute. The elements can be any html element available on the Page.</p>
        <p>The following Target Query will select all &lt;div> elements on the Page that contain the css class "box", but do not contain the css class "red".</p>
        <div class="box">Click Me</div>
        <div class="box red">Not Me</div>
        <div class="box blue">Click Me too!</div>
    </form>
</body>
</html>

Nhìn code choáng quá phả không nào! Nhưng các bạn đừng lo, đã có Bin rồi!

Bây giờ Bin giải thích từng phần trong code, sau khi giải thích code xong chắc chắc bạn sẽ nói code này chỉ là "ruồi" mà thôi!

Nào bây giờ Bin và các bạn cúng ta đi từng ví dụ nhé!

1. Ví dụ đầu tiên: 


Ext.NET cùng Bin- Events- Async

Asynchronous DirectEvents

(Sự kiện trực tiếp không đồng bộ)

Click vào mỗi nút thật nhanh chóng. Mỗi giá trị sẽ được trả lại sau khi đã trì hoãn với giá trị sau khi đã được cấu hình trước.

Xem ví dụ: Ví dụ cho ta thấy giá trị được hiển thị sau khi kết thúc thời gian trì hoãn của mỗi button nhé:
Màn hình ví dụ nhé, sau khi click bạn sẽ thấy nó hiển thị như sau:
Mình click từ trên xuống dưới, nhưng bạn sẽ thấy giờ xuất hiện của chúng trên màn hình khác nhau đúng không nào, dù button1 được nhấn đầu tiên nhưng hiển thị giờ cuối cùng vì bị trễ 10 giây lận mà



Giải thích code nhé các bạn:

<%@ Page Language="C#" EnableSessionState="False" %>

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>

<script runat="server">

    // Code bắt sự kiện cho button 1
    protected void Button1_Click(object sender, DirectEventArgs e) 
    {
        //Hệ thống sẽ ngủ trong 10 giây, bạn sẽ thực hiện câu lệnh tiếp theo sao 10 giây nhé
        System.Threading.Thread.Sleep(10000);
        // Sau 10 giây label ở giao diện sẽ được gán giá trị là "Lable : DD/MM/YYYY"
        this.Label1.Text = "Label1 : " + DateTime.Now.ToLongTimeString();
    }

  // Code bắt sự kiện cho button 2 giống button 1  
  protected void Button2_Click(object sender, DirectEventArgs e)
    {
        // Hệ thống sẽ ngủ trong 1 giây
        System.Threading.Thread.Sleep(1000);
        this.Label2.Text = "Label2 : " + DateTime.Now.ToLongTimeString();
    }
    
    // Code bắt sự kiện cho button 3 giống button 1  
    protected void Button3_Click(object sender, DirectEventArgs e)
    {
        // Hệ thống sẽ ngủ trong 5 giây
        System.Threading.Thread.Sleep(5000);
        this.Label3.Text = "Label3 : " + DateTime.Now.ToLongTimeString();
    }
    // Code bắt sự kiện cho button 4 giống button 1  
    protected void Button4_Click(object sender, DirectEventArgs e)
    {
        // Hệ thống sẽ ngủ trong 1 giây
        System.Threading.Thread.Sleep(1000);
        this.Label4.Text = "Label4 : " + DateTime.Now.ToLongTimeString();
    }
</script>
 
<!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>Asynchronous DirectEvents - Ext.NET Example</title>
    <link href="../../../../resources/css/examples.css" rel="stylesheet" type="text/css" />

</head>
<body>
    <form runat="server">
        <ext:ResourceManager runat="server" />

        <h1>Asynchronous DirectEvents</h1>

        <p>Click each Button quickly in succession. Each will value will be returned after its configured delay, 
        which simulates a long running server-side task.</p>

        // Button 1 có tên hiển thị là "Submit 1 (10 sec)"
        // OnDirectClick bắt sự kiện click của button 1 và thực hiện hoàm Button1_Click trên server
        <ext:Button runat="server" Text="Submit 1 (10 sec)" OnDirectClick="Button1_Click" />

        // Button 2 tương tự button 1
        <ext:Button runat="server" Text="Submit 2 (1 sec)" OnDirectClick="Button2_Click" />

        // Button 3 tương tự button 1
<ext:Button runat="server" Text="Submit 3 (5 sec)" OnDirectClick="Button3_Click" />

        // Button 4 tương tự button 1
<ext:Button runat="server" Text="Submit 4 (1 sec)" OnDirectClick="Button4_Click" /> <ext:Label ID="Label1" runat="server" /><br /> <ext:Label ID="Label2" runat="server" /><br /> <ext:Label ID="Label3" runat="server" /><br /> <ext:Label ID="Label4" runat="server" /> </form> </body> </html>

Mình vừa giới thiệu và giải thích code cho phần Sự kiện của bài. Bạn thấy không, nó không khó như mình tưởng.

Các bạn ủng hộ mình để phần sau mình viết tốt hơn nhé!

Bin cảm ơn các bạn và xin chào, hẹn gặp lại các bạn trong những bài sau!

Wednesday, July 20, 2016

Giới thiệu về Ext.NET

Xin chào tất cả các bạn!

    Một may nắm cho Bin là tham gia một dự án có sử dụng Ext.NET (phiên bản 1.7), vì vậy bắt đầu từ hôm nay Bin sẽ cùng các bạn, chúng ta sẽ cùng nhau tìm hiểu về phần này nhé!

    Bin mong nhận được sự ủng hộ của các bạn để ta có thể đi đến hết con đường dài.

    Ext.NET là một khái niệm không hề mới, nhưng đối với Bin hay những bạn nào chưa biết thì đây là một khái niệm "Mới" đúng không nhỉ? Vì vậy phần đầu tiên này Bin sẽ giới thiệu sơ qua để các bạn có cái nhìn tổng quan nhất.

    Nào chúng ta bắt đầu nhé!

1. Tổng quan


    Ext.NET là một bộ công cụ AJAX thay đổi các trình điều khiển của ASP.NET (Webform và MVC).

Các bạn có thể thấy một giao diện rất đẹp

    Tích hợp bộ thư viện Sencha Ext JS, tính năng đặc biệt nhát chính là giao diện sẽ tự động co dãn đúng theo kích thước của trình duyệt, và còn nhiều tính năng mới trong bộ thư viện.

Các bạn có thể thấy giao diện tự động co dãn và sắp xếp các thành phần

    Có 2 phiên bản trong tùy chọn đó là: Open-Source (mã nguồn mớ- cấp phép miễn phí cho cộng đồng) hoặc Closed-Source (Cung cấp giấy phép chuyên nghiệp).

2. Yêu cầu hệ thống cho phiên bản Ext.NET (1.7)


   - Visual Studio 2008 hoặc 2010
   - Visual web developer express 2008 hoặc 2010
   - .NET Framework 3.5 vàn 4.0

Phần sau chúng ta sẽ khởi động ứng dụng nhé!

Cảm ơn bạn đã xem đến phần cuối này, mọi ý kiến các bạn xin bình luận ngôn từ văn hóa ở dưới nhé!

Chúc bạn nhiều may mắn trong cuộc sống! Và xin chào tất cả các bạn!