Bạn tham khảo link sau thử xem :
http://stackoverflow.com/questions/4502920/c-sharp-how-to-get-the-row-number-from-a-datatable
Chào các bạn, mình có vấn đề là muốn hiển thị số lượng dòng trên datagridview mà không biết như thế nào, mong các bạn giúp đỡ.
Như này nhé: mình có 1 form với
- 1 button Show
- 1 button Next
- 1 button Review
- 1 datagridview: hiển thị dữ liệu
- 1 Textbox: số dòng dữ liệu sẽ được hiển thị trên datagridview (dữ liệu lấy từ dataTable nhé)
vd:
- khi mình nhập số 10 (hoặc 50) vào textbox và nhấn Show thì datagridview sẽ hiển thị 10 (hoặc 50) dòng
- Khi nhấn Next thì datagridview sẽ hiển thị 10 (hoặc 50) dòng tiếp theo
- Khi nhấn Review thì datagridview sẽ hiển thị 10 (hoặc 50) dòng trước đó
Các bạn giúp mình với nhé, mình cảm ơn !
Bạn tham khảo link sau thử xem :
http://stackoverflow.com/questions/4502920/c-sharp-how-to-get-the-row-number-from-a-datatable
mình hơi gà TA nhưng theo mình hiểu là cái đó lấy chỉ số của dòng thứ i trong DataTable (xem dòng đó là dòng thứ bao nhiêu) chứ không phải cái mình đang cần
1. Tạo dữ liệu cho đối tượng DataTable, trong code mình tạo 12 dòng.Hi vọng code sau giúp bạn phần nào
2. Hiển thị số dòng trên DataTable, lấy 10 dòng, kể từ dòng đầu tiên có chỉ số 0.Code:DataTable dataTable = GetTable();//Hàm GetTable tạo và trả về một đối tượng DataTable
ShowDataTable có các tham số truyền vào như sau: ShowDataTable(DataTable dataTable, int igetRow, int ibeginRow)Code:ShowDataTable(dataTable,10,0); // hiển thị 10 dòng, từ dòng chỉ số 0
+ dataTable kiểu DataTable : chứa dữ liệu của đối tượng DataTable, thao tác trên đối tượng phụ này.
+ igetRow kiểu int: chứa số dòng muốn lấy từ dataTable, được truyền vào 10.
+ ibeginRow kiểu int: chứa chỉ số dòng bắt đầu, được truyền vào 0.
Biến iendRow được tính toán chứa chỉ số dòng thứ 10 cần lấy, kể từ ibeginRow.
Thực hiện lặp i chứa chỉ số dòng cần lấy, sau đó tăng dần khi còn nhỏ hơn chỉ số dòng cuối. j đánh chỉ số dòng cho đối tượng DataGridView, j tăng dần.Code:int iendRow = igetRow + ibeginRow;
Trong lặp chứa các dòng sau:Code:for (int i = ibeginRow, j = 0; i < iendRow; i++, j++)
Ban đầu tạo một dòng rỗng, insert tại vị trí j một dòng mới vào đối tượng DataGridView là dgv.
Sau đó lấy giá trị tại dòng i trong dataTable gán tương ứng với dòng j trong dgv.Code:this.dgv.Rows.Insert(j, new DataGridViewRow());
3. Code đầy đủ.Code:this.dgv["ID", j].Value = dataTable.Rows[i]["ID"]; this.dgv["NAME",j].Value = dataTable.Rows[i]["NAME"];
Code:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace DataSourceApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void bt_load_Click(object sender, EventArgs e) { DataTable dataTable = GetTable(); if (dataTable == null) return; ShowDataTable(dataTable,10,0); // hiển thị 10 dòng, từ dòng chỉ số 0 } private void ShowDataTable(DataTable dataTable, int igetRow, int ibeginRow) { this.dgv.Columns.Add("ID", "ID"); this.dgv.Columns.Add("Name", "Name"); int iendRow = igetRow + ibeginRow; for (int i = ibeginRow, j = 0; i < iendRow; i++, j++) { this.dgv.Rows.Insert(j, new DataGridViewRow()); this.dgv["ID", j].Value = dataTable.Rows[i]["ID"]; this.dgv["NAME",j].Value = dataTable.Rows[i]["NAME"]; } this.dgv.Show(); } private DataTable GetTable() { DataTable theTable = new DataTable("SampleTable"); theTable.Columns.Add("ID", typeof(long)); theTable.Columns.Add("Name", typeof(string)); theTable.PrimaryKey = new DataColumn[] { theTable.Columns["ID"] }; theTable.Rows.Add(new Object[] { 1001L, "Nguyen Van A"}); theTable.Rows.Add(new Object[] { 1002L, "Nguyen Van B" }); theTable.Rows.Add(new Object[] { 1003L, "Nguyen Van C" }); theTable.Rows.Add(new Object[] { 1004L, "Nguyen Van D" }); theTable.Rows.Add(new Object[] { 1005L, "Nguyen Van E" }); theTable.Rows.Add(new Object[] { 1006L, "Nguyen Van F" }); theTable.Rows.Add(new Object[] { 1007L, "Nguyen Van G" }); theTable.Rows.Add(new Object[] { 1008L, "Nguyen Van H" }); theTable.Rows.Add(new Object[] { 1009L, "Nguyen Van J" }); theTable.Rows.Add(new Object[] { 1010L, "Nguyen Van K" }); theTable.Rows.Add(new Object[] { 1011L, "Nguyen Van L" }); theTable.Rows.Add(new Object[] { 1012L, "Nguyen Van M"}); return theTable; } } }
Đã được chỉnh sửa lần cuối bởi nguyenduyhao : 23-12-2014 lúc 02:10 PM. Lý do: Add comment
Dùng các properties của DataColumn: Autonumber DataColumn
Ví dụ: How to: Add an autonumber column in a DataGridView
Cảm ơn các bạn nhé, mình làm được rồi, theo cách của 1 thành viên trên trang: http://stackoverflow.com/
đây code của mình cho bạn nào tham khảo:
trong đó:
FromRow - hiển thị từ dòng số....mặc định mình để là 0
NumOfRow - số lượng dòng cần hiển thị, mặc định để là 10 và có thể thay đổi
code nút ShowCode:private void RefreshItems() { int FromRow = Convert.ToInt32(txtFromRow.Text); int NumOfRow = Convert.ToInt32(txtNumOfRow.Text); try { conn.Open(); string refresh = @"select ROW_NUMBER() over (order by i.Itemcode) as STT, i.Assortment, ia.Description as Nhom, i.Itemcode, i.Barcode, i.Description, iu.Description as DVT, i.ItemType, (case when (i.IsSerialItem = 1 or i.IsSerialItem = 'True') then 'Yes' else 'No' end) as IsSerialItem, (case when (i.IsBatchItem = 1 or i.IsBatchItem = 'True') then 'Yes' else 'No' end) as IsBatchItem , (case when (i.Status = 1 or i.Status = 'True') then 'Active' else 'DisActive' end)as Status,(CONVERT(char(2),i.UserNumber4) + ' (tháng)') as UserNumber4, i.VATcode, i.PurPrice, i.Purdis, i.PurAmount, i.SalePrice, i.Saledis, i.SaleAmount, i.Input, i.Syscreated, i.UserID1, i.Sysmodified, i.UserID2 from Items i left join ItemAssortment ia on ia.Assortment = i.Assortment left join ItemUnit iu on iu.Unitcode = i.Unit "; SqlDataAdapter da = new SqlDataAdapter(refresh,conn); DataSet ds = new DataSet(); if (NumOfRow != 0) { da.Fill(ds, FromRow, NumOfRow, "Items"); } else { da.Fill(ds, "Items"); } dataGridViewItems.DataSource = ds.Tables[0]; txtItemcode.DataBindings.Clear();//Cái này để clear textboxItemcode txtItemcode.DataBindings.Add("text", ds.Tables[0], "Itemcode");//Cái này để bind cái Itemcode đang được chọn trên Gridview vào textboxItemcode dataGridViewItems.RowsDefaultCellStyle.BackColor = Color.LightBlue;//Cái này để tô màu thôi dataGridViewItems.AlternatingRowsDefaultCellStyle.BackColor = Color.LightSkyBlue;//Cái này để tô màu thôi conn.Close(); } catch (Exception ex) { MessageBox.Show("Đã xảy ra lỗi:\n" + ex.ToString() + "", "Thông báo !", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { conn.Close(); } }
code nút Next: tăng chỉ số thêm đúng bằng số lượng dòng muốn hiển thị rồi gọi lại hàm RefreshItems();Code:RefreshItems(); //gọi hàm nó ra thôi :)
code nút Previous: nếu chỉ số FromRow > số dòng hiển thị thì giảm chỉ số đi dúng bằng số dòng hiển thị rồi gọi lại hàm RefreshItems();Code:int getRow = Convert.ToInt32(txtNumOfRow.Text); int beginRow = Convert.ToInt32(txtFromRow.Text); int Next = beginRow + getRow; txtFromRow.Text = Next.ToString(); RefreshItems();
Code:int NumOfRow = Convert.ToInt32(txtNumOfRow.Text); int FromRow = Convert.ToInt32(txtFromRow.Text); int Previous; if (FromRow > NumOfRow) { Previous = FromRow - NumOfRow; txtFromRow.Text = Previous.ToString(); RefreshItems(); } else { txtFromRow.Text = "0"; RefreshItems(); }
Đã được chỉnh sửa lần cuối bởi thanlong_1189 : 25-12-2014 lúc 03:45 PM.