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

Đề tài: Chuyển con trỏ về 1 ô trong datagridview (Get focus cell in datagridview)

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

    Smile Chuyển con trỏ về 1 ô trong datagridview (Get focus cell in datagridview)

    Hi all !
    Mìh có 1 cái datagridview. khi mình nhập liệu cho 1 ô và kiểm tra dữ liệu đó đã tồn tại, thì thông báo và focus về ô đã nhập sai đó. You nào biết chỉ giúp
    Minh viết thế này nhưng không được. các bạn coi giúp nha.
    private void dgv_print_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {

    if (e.RowIndex < 0) return;


    //Check VolumeID exist
    //this.txttitle.Text = "Test change 2";
    for (int i = 0; i < dgv_print.Rows.Count; i++)
    {
    if (dgv_print.Rows[i].Cells[0].Value != null)
    {
    if ((i != e.RowIndex) && (dgv_print.Rows[e.RowIndex].Cells[0].Value.ToString() == dgv_print.Rows[i].Cells[0].Value.ToString()))
    {
    MessageBox.Show("This VolumeID exist already. please type another");
    dgv_print.Rows[e.RowIndex].Cells[0].Value = "";

    dgv_print.Rows[e.RowIndex].Selected = true;
    dgv_print.CurrentCell = dgv_print.Rows[e.RowIndex].Cells[0];
    dgv_print.BeginEdit(true);

    //return;
    }
    }
    }
    }

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    825

    Cái này bạn nhầm rồi. Vì đối tượng truyền vào của sự kiện CellEndEdit là DataGridViewCellEventArgs e sẽ chứa thông tin chính là cell mà bạn đang Edit.
    e có 2 thuộc tính là ColumnIndex và RowIndex là chỉ số của ô mà bạn đang Edit.

    Vậy thì chỉ cần kiểm tra trên DataGrid ô Có hàng RowIndex và cột là ColumnIndex là được, và activate nó (set focus về nó).

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

    Trích dẫn Nguyên bản được gửi bởi haingo08tlt Xem bài viết
    khi mình nhập liệu cho 1 ô và kiểm tra dữ liệu đó đã tồn tại, thì thông báo và focus về ô đã nhập sai đó
    Visual C# Code:
    1. if (/*Đã tồn tại*/)
    2. {
    3.     Teacher_dataGridView.CurrentCell = Teacher_dataGridView.Rows[rowindex].Cells[0];// Đưa Control về vị trí của nó
    4.     Teacher_dataGridView.CurrentRow.Selected = true;// Set trạng thái Selected
    5.     MessageBox.Show("Mày có rồi còn đòi xin thêm nữa sao! Khỉ gió");// Thông báo (^_^)
    6. }
    Hỏi để học, học phải hỏi

    Visual C# Code:
    1. Currently Active Users Viewing This Thread: 2 (1 members and 1 guests)
    2. trungnv // Không thấy guests đâu (?)(?)(?)

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    17

    Smile Vẫn focus không được

    Mình đã thử trong sự kiện endEdit và valueChange mà vẫn không được. Khi nhập trùng thì báo nhưng vẫn focus qua cell bên cạnh hoặc phía dưới. Minh xin gửi chương trình để mọi người góp ý.
    Thank!
    Attached Files Attached Files

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Ho Chi Minh City
    Bài viết
    141

    Một cách mà người ta thường hay làm để check dữ liệu nhập trên lưới là sử dụng Event : CellValidating hoặc RowValidating.
    Khi check dữ liệu không hợp lệ thì set e.Cancel = true, có thể set thêm e.ErrorText = "Thông báo lỗi" hoặc là sử dụng MessageBox.

    Trước đó trong sự kiện CurrentCellDirtyStateChanged của DataGridView viết :
    dataGridView1.CommitEdit(DataGridViewDataErrorCont exts.Commit)

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

    Mặc định Chuyển con trỏ về 1 ô trong datagridview (Get focus cell in datagridview)

    Theo mình thì bạn nên lưu ý cái này : event CellValueChange và event khi người ta chuyển qua 1 cell khác(enter, dùng các phím arrows...). Nếu bạn dùng 1 messahe box khai báo trong event cell value change thì bạn sẽ thấy messagebox sẽ hiện ra trước và sau đó mới nhảy qua 1 cell khác.

    Điều đó chứng tỏ event chuyển qua cell khác sẽ thực hiện sau event cellvalueChange. Vì thế cho dù bạn có thiết lập cỡ nào trong event CellValueChange thì cuối cùng event chuyển qua cell khác cũng thực hiện sau(tất nhiên cell mới sẽ được Selected).

    Mình tạm thời nghĩ ra cách giải quyết này là thiết lập ở 2 event. Event CellValueChanged hay CellLeave... dùng để lấy index của cái cell vừa nhập giá trị, Event CurrentCellChange thì dùng để kiểm tra giá trị dựa trên cái index kia.


    Mà cách ngắn gọn nhất dễ hiểu nhất là làm theo cách bạn @phucpham trên kia : quăng dzô CellValidating, có gì xảy ra thì cho nó Cancel = true, ông nội nó cũng ko thoát ra được.
    Đã được chỉnh sửa lần cuối bởi Malib : 20-04-2010 lúc 10:59 AM.

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

    Mặc định Tìm kiếm trong datagridview

    Mình có một thắt mắc này nhờ các bạn trả lời giúp

    Mình có 1 button, textbox, Gridview,
    khi nhập tìm kiếm vào textbox và click vào button thì sẽ trả về giá trị cần tìm kiếm trên grirdview(gridview đã có dữ liệu khi form đựoc load)
    thanks các bạn nhiều nhé
    hy vọng các bạn sẽ giúp mình

  8. #8
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Trích dẫn Nguyên bản được gửi bởi tran_minh922 Xem bài viết
    Mình có một thắt mắc này nhờ các bạn trả lời giúp

    Mình có 1 button, textbox, Gridview,
    khi nhập tìm kiếm vào textbox và click vào button thì sẽ trả về giá trị cần tìm kiếm trên grirdview(gridview đã có dữ liệu khi form đựoc load)
    thanks các bạn nhiều nhé
    hy vọng các bạn sẽ giúp mình
    Thì Select với where là cái Textbox đó rồi gán DataSource cho cái Datagrid đang có dữ liệu đó thôi mà bạn

    Còn ko thì cho cái DataSource của DatagridView đó = null trước khi Select rồi

    đổ DataSource vừa select dc lên Datagridview đó lại!

  9. #9
    Ngày gia nhập
    02 2011
    Bài viết
    3

    string sql = "select * from " + tblName + " where " + ma + " like N'%" + vthongtin + "%' ";
    SqlDataAdapter da = new SqlDataAdapter(sql, cn);
    DataSet ds = new DataSet();
    da.Fill(ds);
    return ds;
    //sau do gan ds nay vao datagridview la ok thui
    datagridview1.datasource = ds.table[0];

  10. #10
    Ngày gia nhập
    05 2011
    Nơi ở
    binh duong
    Bài viết
    3

    cái này bạn bẫy lỗi trên data thôi. vì mình thấy bài viết của bạn lâu rồi nên mình không trả lời.
    nếu ai cần thì pm mình qua mail: nam.cbit@gmail.com

Các đề tài tương tự

  1. Không cho di chuyển ra khỏi cell trong Datagridview khi nhập sai
    Gửi bởi nguyen.kiepdatrang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 10-05-2013, 05:20 PM
  2. Hỏi: set Focus cho một ô trong DataGridView nhw thết nào
    Gửi bởi trico9.0 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 25-04-2013, 10:01 AM
  3. Lấy màu của 1 Cell trong DatagridView?
    Gửi bởi gacongnghiep_cs trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 25-08-2011, 10:28 AM
  4. vấn đề về cell trong datagridview?
    Gửi bởi DuyCanh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 18-12-2010, 11:47 AM
  5. Đổ dữ liệu vào nhiều Datagridview; Chuyển focus sang textbox khac
    Gửi bởi MYNAM trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 18-11-2010, 09:06 AM

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