Archive | December 28, 2012

Định dạng thời gian trong GridView ASP.NET

Bài dưới đây, chúng ta cùng tìm hiểu về định dạng thời gian trong gridView của ASP.NET và cách dùng String.Format.NET, để cập nhập chính xác định dạng thời gian từ gridview vào database
Chuẩn bị:  Ta sẽ có 1 GridView dùng để hiển thị 1 form từ CSDL lên web và 1 dataTable để đổ dữ liệu lên GridView đó
Bình thường khi mà load dữ liệu lên GridView thì dữ liệu về thời gian trên gridview sẽ theo định dạng của Hệ quản trị  CSDL. Ở đây ta dùng SQL server. Đinh dạng thời gian của SQL sẽ là yyyy/mm/dd  hoặc mm/dd/yyyy. và như thế thì Gridview sẽ hiển thi đúng như thế và còn thêm cái giờ, phút, giây ở đằng sau nữa, nhìn rất rối, bây h ta sẽ đổi lại định dạng đó lại thành dd/mm/yyyy và ko có đuôi thời gian đằng sau nữa:
 
Click vào gridview  chon Edit Column -> chọn đến trường hiển thị định dạng thời gian, ở đây của tôi là trường namsinh
vào phần data -> DataFormatString -> {0:dd/MM/yyyy}
Như thế là ta sẽ hiển thị được thời gian theo đúng định dang dd/mm/yyyy
Bây giờ đến vấn đề là cập nhập dữ liêu, nếu các bạn thao tác với ajax dùng calendarExtender và 1 textbox để lựa chọn thời gian và textbox đó hiển thi với định dạng thời gian là dd/mm/yyyy, thì khi câp nhập CSDL vào database chắc chắn sẽ bị lỗi
vì định dạng thời gian của SQL yyyy/mm/dd còn định dạng khi thêm CSDL là dd/mm/yyyy , lỗi này thường xảy ra với các bạn mới học, và mình cũng không ngoại lệ, hihi, sau đây là phương án giải quyết
Trong .NET có 2 hàm String.Format và .ToString(). .ToString được dùng rất nhiều và đa số tất cả các Object đều kế thừa hàm .ToString(). Cách này làm cho code gọn gàng và dễ hiểu hơn.
Muốn hóan đổi một Object ra String thì dùng hàm .ToString.
Thí dụ ta có một DateTime-object muốn hiển thị nó trong một Label:
    DateTime DTNow = DateTime.Now;
lblNgayToString.Text =  DTNow .ToString();
.ToString() không những hóan đổi giá trị của một Ojbject ra String mà ta có thể format ngay khi dùng .ToString() không cần phải gọi riêng một hàm Format như trong VBScript.
   DateTime DTNow = DateTime.Now;
lblNgayToString.Text =  DTNow .ToString(“dd.MM.yyyy”);
Như thế là chúng ta đã đổi được định dang thời gian rồi !!
Ap dung vào bài của tôi :

       DateTime date;
date = Convert.ToDateTime(txtnamsinh.Text);
txtnamsinh.Text = date.ToString(“MM/dd/yyyy”);

Khai báo 1 biến DateTime , sau đó gán dữ liệu cho nó từ textbox sau khi đã convert lại kiểu dữ liệu, việc còn lại thì quá đơn  giản ta sẽ gán lại cho textbox giá trị đã đc chuyển định dạng

Hi vọng bài viết nhỏ này sẽ giúp ích cho các menber mới tìm hiểu asp.net như mình