Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Hiển thị số lượng dòng trên datagridview ???

  1. #1
    Ngày gia nhập
    11 2010
    Bài viết
    412

    Mặc định Hiển thị số lượng dòng trên datagridview ???

    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 !

  2. #2
    Ngày gia nhập
    07 2013
    Bài viết
    2

    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

  3. #3
    Ngày gia nhập
    11 2010
    Bài viết
    412

    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

  4. #4
    Ngày gia nhập
    07 2013
    Bài viết
    2

    Mặc định Get Rows From DataTable

    Hi vọng code sau giúp bạn phần nào
    1. Tạo dữ liệu cho đối tượng DataTable, trong code mình tạo 12 dòng.
    Code:
    DataTable dataTable = GetTable();//Hàm GetTable tạo và trả về một đối tượng DataTable
    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:
    ShowDataTable(dataTable,10,0); // hiển thị 10 dòng, từ dòng chỉ số 0
    ShowDataTable có các tham số truyền vào như sau: ShowDataTable(DataTable dataTable, int igetRow, int ibeginRow)
    + 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.
    Code:
    int iendRow = igetRow + 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:
    for (int i = ibeginRow, j = 0; i < iendRow; i++, j++)
    Trong lặp chứa các dòng sau:
    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.
    Code:
               this.dgv.Rows.Insert(j, new DataGridViewRow());
    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["ID", j].Value = dataTable.Rows[i]["ID"];
                this.dgv["NAME",j].Value = dataTable.Rows[i]["NAME"];
    3. Code đầy đủ.
    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

  5. #5
    Ngày gia nhập
    06 2013
    Bài viết
    140

    Dùng các properties của DataColumn: Autonumber DataColumn

    Ví dụ: How to: Add an autonumber column in a DataGridView

  6. #6
    Ngày gia nhập
    11 2010
    Bài viết
    412

    Mặc định Hiển thị số lượng dòng trên datagridview ???

    Trích dẫn Nguyên bản được gửi bởi nguyenq Xem bài viết
    Dùng các properties của DataColumn: Autonumber DataColumn

    Ví dụ: How to: Add an autonumber column in a DataGridView
    Cảm ơn bạn nhé, mình sẽ thử
    Trích dẫn Nguyên bản được gửi bởi nguyenduyhao Xem bài viết
    Code:
    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();
              
            }
    Cảm ơn bạn nhiều, mình sẽ thử đoạn code đó

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    412

    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:
    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 Show
    Code:
    RefreshItems(); //gọi hàm nó ra thôi :)
    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:
     int getRow = Convert.ToInt32(txtNumOfRow.Text);
                int beginRow = Convert.ToInt32(txtFromRow.Text);
                int Next = beginRow + getRow;
                txtFromRow.Text = Next.ToString();
                RefreshItems();
    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 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.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn