PDA

View Full Version : Vấn đề về hiển thị trên GridView.Mong mọi người góp ý!



thanhan1
29-05-2011, 21:16
Mình có 1 ứng dụng viết bằng C#.mình dùng GridView hiện thị dữ liệu từ database.Ở database,mình có 1 bảnG,bảng đó có rất nhiều trường,mỗi trường lại có 1 lượng thông tin lớn.
Khi mình view lên GridView thì do các trường trên GridView có diện tích nhỏ và chí có 1 dòng nên dư liệu người dùng xem dc rất ít.muốn xem tiếp cứ phải kéo khi nào hết dòng thì thôi, rất bất tiện
Mình muốn hỏi mọi người xem khi mình có 1 trường có lượng thông tin lớn có cách nào mở rộng trường đó trong GridView,chẳng hạn thành nhiều dòng như trong exel ko.mong mọi người góp ý!
thanks mọi người!

[=========> Bổ sung bài viết <=========]

Không ai giúp tôi ah?

NgocMydhnt
09-06-2011, 10:34
muốn làm như vậy thay vì dùng các bountfield thì bạn nên add vào 1 templatefield. sau đó sử dụng các label để hiển thị các nội dung bạn muốn hiện thị.
giới hạn số lượng hiển thị trân 1 trang bạn cho allowpaging=true. pagesize=2 chẳng hạn nếu bạn muốn hiển thị 2 kết quả trên 1 trang. ở phần view code: sự kiện Gridview_PageIndexChanging cho đoạn mã: Gridview.PageIndex = e.NewPageIndex; là ok
có phải ý bạn muốn như thế này k?

thanhan1
09-06-2011, 17:08
hiển thị 2 kết quả trên 1 trang là sao hả bạn? mình ko hiểu ý bạn nói lắm.minh muốn design sao cho 1 trường của dataGridView nó rộng ra.nếu dữ liệu nhiều quá thì côt đó sẽ tự động xuống dòng chứ ko dãn dài ra vô tận.Mong bạn góp ý!

NgocMydhnt
13-06-2011, 13:49
ý mình thay vì bạn show dữ liệu là các colum thì bạn sử dụng 1 templatefield để hiển thị dữ liệu theo hàng ngang. còn muốn cột không dài ra vô tận thì bạn giới hạn động rộng của cột là được. Nhưng mình nghĩ với dữ liệu nhiều bạn nên show dữ liệu theo hàng ngang sẽ dễ nhìn hơn.

cao_hung
13-06-2011, 14:37
hiển thị 2 kết quả trên 1 trang là sao hả bạn? mình ko hiểu ý bạn nói lắm.minh muốn design sao cho 1 trường của dataGridView nó rộng ra.nếu dữ liệu nhiều quá thì côt đó sẽ tự động xuống dòng chứ ko dãn dài ra vô tận.Mong bạn góp ý!

Hình như cái này bạn chỉ cần set thuộc tính WrapMode cho nó là được. khi dữ lệu nhiều hơn chiều dài của cột nó sẻ tự xuống dòng.

NgocMydhnt
13-06-2011, 16:48
Hình như cái này bạn chỉ cần set thuộc tính WrapMode cho nó là được. khi dữ lệu nhiều hơn chiều dài của cột nó sẻ tự xuống dòng.
HÌnh như wrap là không xuống dòng chứ bạn. Giả sử bạn giới hạn cột có độ rông 5% nhưng dữ liệ lại dài hơn thì bạn dùng wrap để cho nó không bị rớt dòng

cao_hung
14-06-2011, 15:58
HÌnh như wrap là không xuống dòng chứ bạn. Giả sử bạn giới hạn cột có độ rông 5% nhưng dữ liệ lại dài hơn thì bạn dùng wrap để cho nó không bị rớt dòng

Còn thùy thuộc vào giá trị bạn gán cho WrapMode nữa(True, False, NotSet).

Đây là code minh họa mình đã test. Trong đó Cloumns[1] là trường có dữ liệu lớn cần thay đổi hiển thị bằng cách xuống dòng. WrapMode là dể cho cell đó hiển thị thành nhiều dòng, AutoSizeRowsMode là để dòng đó tự điều chỉnh chiều cao cho phù hợp với số dòng được hiển thị.

dataGridView1.Columns[1].Width = 250;
dataGridView1.Columns[1].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

Kết quả
http://easydeveloping.files.wordpress.com/2011/06/multilinedatagidview.jpg


Còn nếu chưa rỏ thì xem minh họa tại đây:http://www.mediafire.com/?09w9n856bheao87

chutieund
16-06-2011, 15:39
Làm như bạn cao_hung là dúng rùi :P hoặc bạn có thể dùng css để định dạng cho toàn bộ grid của bạn.

NgocMydhnt
20-06-2011, 09:23
Hi đúng rùi mình quên mất là tùy thuộc vào lúc mình định dạng cho nó nữa. hi sr ha

QuanN
21-06-2011, 10:02
Convert boundfield thành templatefield rồi add Textbox control với thuộc tính TextMode = MultiLine và, nếu cần, ReadOnly = true.