Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Hướng dẫn Thao tác cơ bản (Thêm, Xóa, Sửa) với GridControl của DevExpress

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    464

    Mặc định Hướng dẫn Thao tác cơ bản (Thêm, Xóa, Sửa) với GridControl của DevExpress

    10h14 ' ngày 1/11/2011 . Mất hơn 15' để chuẩn bị cho các bạn cái này. Tâm huyết lắm đó nhé. Xem xong thấy thích thì tahnk tui cái:@:@:@
    Dô:

    Đầu tiên bạn làm theo các bước trong video sau để tạo ra cái Gridcontrol như mong muốn nhé


    Sau khi đã có GridControl như trong Video.
    + Tạo ra 1 Datatable đặt tên là dt và nó là biến toàn cục
    + Trong sự kiện FormLoad code
    Visual C# Code:
    1.         private void SinhVien_Load(object sender, EventArgs e)
    2.         {
    3.            
    4.            
    5.             // khởi tạo cột cho Datatable đã khai báo ở trên
    6.             // Lưu ý tên cọt nhé: để gán FieldName của từng cột trên Grid cho chính xác
    7.             // nó phân biệt cả hoa thường đó nhé
    8.             dt.Columns.Add(new DataColumn("MaSV"));
    9.             dt.Columns.Add(new DataColumn("TenSV"));
    10.             dt.Columns.Add(new DataColumn("SDT"));
    11.             // Add du lieu vao dt
    12.             DataRow dr;
    13.             dr = dt.NewRow();
    14.             dr.BeginEdit();
    15.             dr["MaSV"] = "SV0001";
    16.             dr["TenSV"] = "Nguyen Van A";
    17.             dr["SDT"] = "123123";
    18.             dr.EndEdit();
    19.             dt.Rows.Add(dr);
    20.  
    21.             dr = dt.NewRow();
    22.             dr.BeginEdit();
    23.             dr["MaSV"] = "SV0002";
    24.             dr["TenSV"] = "Nguyen Van B";
    25.             dr["SDT"] = "123122133";
    26.             dr.EndEdit();
    27.             dt.Rows.Add(dr);
    28.  
    29.             dr = dt.NewRow();
    30.             dr.BeginEdit();
    31.             dr["MaSV"] = "SV0003";
    32.             dr["TenSV"] = "Nguyen Van C";
    33.             dr["SDT"] = "123112323";
    34.             dr.EndEdit();
    35.             dt.Rows.Add(dr);
    36.             // Gan dt va Gridcontrol
    37.             gridControl1.DataSource = dt;
    38.  
    39.         }

    Bạn Chọn vào cái Gridview1 trong cái ô có chứa RunDessign mà mình vừa bấm vào đó.
    - chọn qua phần sự kiện(có cái dấu sấm sét đó) chọn các sự kiện sau và doubleClick vào các sự kiện đó
    *Trong code mình đã Cmment lại rồi đó
    1> gridView1_InvalidRowException và code như sau
    Visual C# Code:
    1.         private void gridView1_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowException  EventArgs e)
    2.         {
    3.             // Sự kiện này để người ta không chuyển qua dòng khác được khi có lỗi xảy ra nè
    4.             // Nó nhận giá trị e.Valid của gridView1_ValidateRow để ứng xử
    5.             // neu e,Valid =True thì nó cho chuyển qua dòng khác hoặc làm tác vụ khác
    6.             // và ngược lại
    7.             e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAc  tion;
    8.         }

    2>gridView1_ValidateRow Code như sau
    Visual C# Code:
    1.         private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArg  s e)
    2.         {
    3.             string sErr = "";
    4.             bool bVali = true;
    5.             // kiem tra 3 cell cua mot dong dang Edit xem co rong ko?
    6.             // minh quen mat kí tự xuống dòng trong C# rồi:D bên VB là VbnewLine
    7.             if (gridView1.GetRowCellValue(e.RowHandle, "MaSV").ToString() == "")
    8.             {
    9.                 bVali = false;
    10.                 sErr = sErr + "Vui long dien Ma SV";
    11.             }
    12.             if (gridView1.GetRowCellValue(e.RowHandle, "TenSV").ToString() == "")
    13.             {
    14.                 bVali = false;
    15.                 sErr = sErr + "Vui long dien Ten Sinh Vien";
    16.             }
    17.             if (gridView1.GetRowCellValue(e.RowHandle, "SDT").ToString() == "")
    18.             {
    19.                 bVali = false;
    20.                 sErr = sErr + "Vui long dien So dien thoai";
    21.             }
    22.             if (bVali)
    23.             {
    24.                 // neu khong rỗng thì bụp cái này ra màn hình
    25.                 if (e.RowHandle < 0)// Đây là thêm mới nè:D
    26.                 {
    27.                     XtraMessageBox.Show(gridView1.GetRowCellValue(e.Ro  wHandle, "MaSV").ToString(), "");
    28.                     XtraMessageBox.Show(gridView1.GetRowCellValue(e.Ro  wHandle, "TenSV").ToString(), "");
    29.                     XtraMessageBox.Show(gridView1.GetRowCellValue(e.Ro  wHandle, "SDT").ToString(), "");
    30.                     XtraMessageBox.Show("Day la them moi nhe");
    31.                     // Insert to DB
    32.                 }
    33.                 else
    34.                 {
    35.                     XtraMessageBox.Show(gridView1.GetRowCellValue(e.Ro  wHandle, "MaSV").ToString(), "");
    36.                     XtraMessageBox.Show(gridView1.GetRowCellValue(e.Ro  wHandle, "TenSV").ToString(), "");
    37.                     XtraMessageBox.Show(gridView1.GetRowCellValue(e.Ro  wHandle, "SDT").ToString(), "");
    38.                     XtraMessageBox.Show("Day la Update nhe");
    39.                     // Update to DB
    40.                 }
    41.             }
    42.             else
    43.             {
    44.  
    45.                 e.Valid = false;
    46.                 // coi như valid không qua được. bạn sẽ không làm được gì trừ khi
    47.                 //điền thêm thông tin hoặc bấm nút ESC trên bàn phím
    48.                 XtraMessageBox.Show(sErr ,"Error!!!");
    49.             }
    50.            
    51.         }
    - Tiếp theo chọn Cái GridControl và chọn sự kiện sau
    Chú ý phân biệt giữa cái GridView1 và cái GridControl1 nhé
    gridControl1_ProcessGridKey Code như sau ()
    Visual C# Code:
    1.         private void gridControl1_ProcessGridKey(object sender, KeyEventArgs e)
    2.         {
    3.             // kiểm tra xem có phải người dùng bấm nút xóa trên bàn phím
    4.             // Và trạng thái của Gridcontrol có không phải là đang edit không (tránh
    5.             // tình trạng người dùng đang focus để sửa 1 cell nào trong Grid view )
    6.             if (e.KeyCode==Keys.Delete &&  gridView1.State != DevExpress.XtraGrid.Views.Grid.GridState.Editing )
    7.             {
    8.                 if (XtraMessageBox.Show("Are you sure?", "Quest", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
    9.                 {
    10.                     XtraMessageBox.Show(gridView1.GetRowCellValue(grid  View1.FocusedRowHandle , "MaSV").ToString(), "");
    11.                     XtraMessageBox.Show(gridView1.GetRowCellValue(grid  View1.FocusedRowHandle, "TenSV").ToString(), "");
    12.                     XtraMessageBox.Show(gridView1.GetRowCellValue(grid  View1.FocusedRowHandle, "SDT").ToString(), "");
    13.                     dt.Rows.RemoveAt(gridView1.FocusedRowHandle);
    14.                 }
    15.             }
    16.         }

    Rồi cuối cùng là hưởng thành quả thôi

    Em không biết đưa cái Code vào Tag của C#. Bác nào sửa giùm em cho dễ đọc. Thank nhiều
    Attached Files Attached Files
    bongda24h.tv

  2. #2
    Ngày gia nhập
    03 2012
    Bài viết
    6

    bài viết hay làm tk bạn nghe, mong rằng sẽ có nhìu bàn viết hay hơn nửa :d

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

    Mặc định Lưu vào CSDL Access và VB.net

    Trích dẫn Nguyên bản được gửi bởi elkidvnn1 Xem bài viết
    10h14 ' ngày 1/11/2011 . Mất hơn 15' để chuẩn bị cho các bạn cái này. Tâm huyết lắm đó nhé. Xem xong thấy thích thì tahnk tui cái:@:@:@
    Em không biết đưa cái Code vào Tag của C#. Bác nào sửa giùm em cho dễ đọc. Thank nhiều
    Xin chào bạn
    Bạn xem giúp mình code này với nhé .
    Mình viết trên VB.net và CSDL là access
    Mình đọc bài của bạn và mình đã làm theo được đến bước không không cho người dùng thoát ra khỏi Row nếu còn trống dữ liệu.
    Nhưng mình không thể updata nó vào csdl dc.
    Mình viết code như sau.
    Code:
      Dim cnn As New OleDbConnection, da As OleDbDataAdapter, dt As DataTable, bs As New BindingSource, cb As OleDbCommandBuilder
    
        Sub KetNoi1()
            Dim str As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data/datakhangviet.mdb;Persist Security Info=True;Jet OLEDB:Database Password=quendi"
            Try
                cnn = New OleDbConnection(str)
                cnn.Open()
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Exclamation)
                cnn.Close()
                Exit Sub
            End Try
        End Sub
        Sub nguon()
            On Error Resume Next
            If cnn.State = ConnectionState.Closed Then
                KetNoi1()
            End If
            dt = New DataTable
            da = New OleDbDataAdapter("select * from T_danhmuchanghoa", cnn)
            da.Fill(dt)
            hienthi.DataSource = dt
            dt.Dispose()
            da.Dispose()
            cnn.Close()
        End Sub
    
    Private Sub chitiet_InvalidRowException(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs) Handles chitiet.InvalidRowException
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction
        End Sub
    
        Private Sub chitiet_ValidateRow(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs) Handles chitiet.ValidateRow
            Dim sErr As String = ""
            Dim bVali As Boolean = True
            ' kiem tra 2 cell cua mot dong dang Edit xem co rong ko?
            ' minh quen mat kí tự xuống dòng trong C# rồi:D bên VB là VbnewLine
            If chitiet.GetRowCellValue(e.RowHandle, "mahang").ToString() = "" Then
                bVali = False
                sErr = sErr & "Vui long dien Ma hàng"
            End If
            If chitiet.GetRowCellValue(e.RowHandle, "tenhang").ToString() = "" Then
                bVali = False
                sErr = sErr & "Vui long dien Ten hàng"
            End If
            
            If bVali Then
                'Nếu đạt được yêu cầu không được tróng thì thực hiện update hay Insert ở đây
                If cnn.State = ConnectionState.Closed Then
                    KetNoi1()
                End If
                da = New OleDbDataAdapter("select * from T_danhmuchanghoa", cnn)
                da.Fill(dt)
                cb = New OleDbCommandBuilder(da)
                da.Update(dt)
                dt.AcceptChanges()
                dt.Clear()
                dt.Dispose()
                da.Dispose()
                cnn.Close()
                nguon()
            Else
    
                e.Valid = False
                ' coi như valid không qua được. bạn sẽ không làm được gì trừ khi
                'điền thêm thông tin hoặc bấm nút ESC trên bàn phím
                MsgBox("Mã hàng và tên hàng không được bỏ trống, Lổi do bạn chưa nhập mã hàng hoăc tên hàng!")
            End If
        End Sub
    -Khi mình sửa hay nhập vào dòng "Thêm mới" trên lưới thì nó ko cập nhật xuống CSDl đc.
    Bạn xem giúp mình với , Xin chân thành cảm ơn bạn.

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

    Bạn ơi giúp mình tý.
    Không hiểu thiếu bước nào trong thiết kế gridview mà khi mình click vào ô tiếp theo để nhập thì giá trị ở cái ô trước nó mất luôn

  5. #5
    Ngày gia nhập
    04 2011
    Bài viết
    44

    Thank bác, không thấy nút thank. Chắc do chưa đủ cấp độ

  6. #6
    Ngày gia nhập
    08 2011
    Bài viết
    42

    Mặc định Hướng dẫn Thao tác cơ bản (Thêm, Xóa, Sửa) với GridControl của DevExpress

    Về cái Gridview của DEVEXPRESS thì bạn phải có cái dataTable cho nó
    Có nghĩa là trưoc khi bạn tạo 1 bảng ghi mới cho nó thì bạn phải đổ vào cho nó 1 cái dataTable có số cột tương ứng với cột bạn muốn , dataTable là dataTable rổng. thì mới làm dc.
    nhớ chú ý nhập tên cột vào thuộc tính F... gì gì đó quên mất (mình dốt tiếng anh nên ko nhớ, nhưng mở nó ra là biết nó hjhjhj).

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

    Trích dẫn Nguyên bản được gửi bởi hongoctrien Xem bài viết
    Bạn ơi giúp mình tý.
    Không hiểu thiếu bước nào trong thiết kế gridview mà khi mình click vào ô tiếp theo để nhập thì giá trị ở cái ô trước nó mất luôn
    Mình cũng đang bị lỗi này, khi nhập số vào columns => sau đó click ra ngoài thì giá trị vừa nhập bị mất, nhưng mình sử dụng Datagirdview thì được, chứ GridControl thì mình sửa hoài ko đc, bạn nào biết chỉ mình với

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

    Visual C# Code:
    1.         private void gridView3_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
    2.         {
    3.                 string maphong = gridView3.GetRowCellValue(e.RowHandle, "MaPhong").ToString().Trim();
    4.                 string tenphong = gridView3.GetRowCellValue(e.RowHandle, "TenPhong").ToString().Trim();
    5.                 string maloaiphong = gridView3.GetRowCellValue(e.RowHandle, "LoaiPhong").ToString().Trim();
    6.                 string makhuvuc = gridView3.GetRowCellValue(e.RowHandle, "KhuVuc").ToString();
    7.                 bool trangthaiphong = bool.Parse(gridView3.GetRowCellValue(e.RowHandle, "TrangThaiPhong").ToString().Trim());
    8.                 if (maphong == "")
    9.                 {
    10.                     bVali = false;
    11.                     sErr = sErr + "Vui lòng điền mã phòng";
    12.                 }
    13.                 if (tenphong == "")
    14.                 {
    15.                     bVali = false;
    16.                     sErr = sErr + "Vui lòng điền tên phòng";
    17.                 }
    18.                 if (maloaiphong == "")
    19.                 {
    20.                     bVali = false;
    21.                     sErr = sErr + "Vui lòng điền mã loại phòng";
    22.                 }
    23.                 if (makhuvuc == "")
    24.                 {
    25.                     bVali = false;
    26.                     sErr = sErr + "Vui lòng điền mã khu vực";
    27.                 }
    28.                 if (bVali)
    29.                 {
    30.                     clsPhong ph = new clsPhong(maphong, tenphong, maloaiphong, makhuvuc, trangthaiphong);
    31.                     clsPhong_DAL phong = new clsPhong_DAL();
    32.                     if (e.RowHandle < 0)
    33.                     {
    34.                         try
    35.                         {
    36.                             phong.InsertPhong(ph);
    37.                         }
    38.                         catch
    39.                         {
    40.                             XtraMessageBox.Show("Thêm không thành công!", "Báo");
    41.                             e.Valid = false;
    42.                         }
    43.                     }
    44.                     else
    45.                     {
    46.                         try
    47.                         {
    48.                             phong.UpdatePhong(ph);
    49.                         }
    50.                         catch
    51.                         {
    52.                             XtraMessageBox.Show("Thông tin chỉnh sửa không hợp lệ", "Báo:");
    53.                             e.Valid = false;
    54.                         }
    55.                     }
    56.                 }
    57.                 else
    58.                 {
    59.                     e.Valid = false;
    60.                     XtraMessageBox.Show(sErr, "Lỗi!!!");
    61.                 }
    62.         }
    63.     }

    Em xem bài hướng dẫn rồi em viết lại như trên đó, nhưng em không hiểu vì sao nó không chạy được, báo lỗi ngay dòng 5, cái LoaiPhong là em viết đúng tên cột rồi. Anh chị làm ơn giúp em với. Em không biết viết bài ở vị trí này đúng không nữa, có sai vị trí anh chị thông cảm. Cảm ơn anh chị!

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

    Mặc định Em làm được rồi

    cảm ơn anh chị, thì ra là em nhằm giữa cái filedname và cái name

  10. #10
    Ngày gia nhập
    10 2011
    Bài viết
    447

    Các bạn cho mình hỏi làm cách nào để phân trang trong GridControl của devexpress vậy, mình muốn code thế này:

    Code:

    Visual C# Code:
    1. private void gridControl1_EmbeddedNavigator_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
    2. {
    3.       if (e.Button.ButtonType == NavigatorButtonType.PrevPage)
    4.       {
    5.            //5 mẫu tin
    6.       }
    7.       if (e.Button.ButtonType == NavigatorButtonType.NextPage)
    8.       {
    9.           //5 mẫu tin
    10.       }
    11. }

    Thanks!

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

  1. Cách thêm một dòng mới trong gridcontrol devexpress?
    Gửi bởi hoanghuyhung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 08-11-2014, 10:55 PM
  2. Thêm dòng mới khi đặt thuôc tính cột AllowEdit = false trong gridcontrol devexpress
    Gửi bởi ndnhan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 01-12-2013, 12:52 AM
  3. ADO.NET Thêm, xóa, sửa trong GridControl của Devpress
    Gửi bởi congchinhqn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 07-11-2011, 08:16 PM
  4. Cách để xóa một dòng trên gridcontrol của devExpress đơn giản:U
    Gửi bởi elkidvnn1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 25-05-2011, 04:27 PM
  5. Thêm nhiều dòng trong gridcontrol với Devexpress
    Gửi bởi endyquach trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 03-04-2011, 02:21 PM

Tags của đề tài này

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