Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 11

Chủ đề: DataGridView Help!!!

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    DataGridView Help!!!

    Mình sử dụng DataGridView để hiển thị dữ liệu. Mình muốn chèn thêm dữ liệu vào DataGridView bằng cách dùng các control như textbox hay commbobox... Khi dùng đối tượng DataRow để thêm dữ liệu vào bảng:
    Mã:
    DataRow _dtr = _dtDatHang.NewRow();
                        _dtr["Mã sản phẩm"] = cbb_SanPhamDatHang.Text.Trim();
                        _dtr["Tên sản phẩm"] = txt_TenSanPhamDatHang.Text.Trim();
                        _dtr["Đơn giá"] = txt_DonGiaDatHang.Text.Trim();
                        _dtr["Số lượng"] = ud_SoLuongDatHang.Value.ToString().Trim();
                        _dtr["Thành tiền"] = txt_ThanhTienDatHang.Text.Trim();
                        _dtr["Quà tặng"] = txt_QuaTangDatHang.Text.Trim();
                        _dtDatHang.Rows.Add(_dtr);                   
                        dgv_ChiTietDonDatHang.DataSource = _dtDatHang;
    trường hợp này thực hiện được và có thể nhập thêm dữ liệu vào bằng cách này với điều kiện trong lưới DataGridView không có dữ liệu. Còn khi có dữ liệu sẵn lúc Load lên thì nó lại bị xóa mặt và thêm dữ liệu mới vào.
    Bạn nào khắc phục được điều này thì giúp mình với. Mình muốn thêm được 1 DataRow vào DataGridView nhưng không xóa đi dữ liệu đã load lên trước đó.[IMG]images/smilies/17.gif[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn có thể đưa toàn bộ đoạn code lên không .
    Đưa mỗi sự kiện click này mình không hiểu cái DataTable của bạn lấy dữ liệu như thế nào . VÀ bạn đưa cái dữ liệu mới vào CSDL của bạn như thế nào >

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Không sao cả mình đã giải quyết được rồi. Bây giờ mình muốn hỏi bạn cách để gán giá trị cho DataGridViewRow. Mình thường lấy giá trị từ DataGridViewRow trên DataGridView như thế này:
    Mã:
    DataGridViewRow row = [Tên DataGridView].CurrentRow;
    txtMaSo = row.Cells[0].Value.ToString();
    txtTen = row.Cells[1].Value.ToString();
    .....
    Nhưng khi làm điều ngược lại thì lại báo lổi:
    Mã:
    DataGridViewRow row = [Tên DataGridView].CurrentRow;
    row.Cells[0].Value=txtMaSo.Text;
    row.Cells[1].Value=txtTen.Text;
    ....
    Bạn có biết giải pháp nào không. Giúp mình với mình cảm ơn nhiều.

  4. #4
    Không bạn hiểu sai ý mình rồi. Dữ liệu đã được load lên ở phần FormLoad còn cái này là code mình tạo cho sự kiện của Button_Click(). Khi mình bấm nút Add(Đây la tên của Button) thì dòng lệnh trên thực thi và xóa hết những dòng được Load lên trong csdl và hiển thị dòng mới tạo. Mình đang muốn tìm cách dữ các dòng trên DataGridView khi add thêm DataRow vào.

  5. #5
    Trích dẫn Gửi bởi 8xhamhoc
    Nhưng khi làm điều ngược lại thì lại báo lổi:
    Mã:
    DataGridViewRow row = [Tên DataGridView].CurrentRow;
    row.Cells[0].Value=txtMaSo.Text;
    row.Cells[1].Value=txtTen.Text;
    ....
    B = A; => gia trị của B la A

    B = C; => giá trị của B thay đổi thành C còn giá trị của A vẫn kô thay đổi vì bạn đâu có thao tác trên A.

    tương tụ như vậy:
    Mã:
    DataGridViewRow row = [Tên DataGridView].CurrentRow; (B = A)
    Mã:
    row.Cells[0].Value=txtMaSo.Text;(B = C)
    câu trả lời của bạn:
    Trích dẫn Gửi bởi dielove
    bạn dùng
    dgv.row[dgv.curentrow.index].cell[0].valuve=txt.text
    rất chính xác

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi trungnv
    B = A; => gia trị của B la A

    B = C; => giá trị của B thay đổi thành C còn giá trị của A vẫn kô thay đổi vì bạn đâu có thao tác trên A.

    tương tụ như vậy:
    Mã:
    DataGridViewRow row(B) = [Tên DataGridView].CurrentRow(A);
    Mã:
    row.Cells[0].Value(B)=txtMaSo.Text;(C)
    câu trả lời của bạn:


    rất chính xác
    Chà bạn này có vẻ tư duy gúm, 2 cách viết đó là tuơng đuơng nhau chứ sao lại sai. DataGridViewRow là 1 class nên nó có thể tham chiếu. Với lại bạn ghi gì mà A, B, C chả hỉu gì hết.

    Bạn 8xhamhoc chạy đoạn code này thấy lỗi gì.


    DataGridViewRow row = [Tên DataGridView].CurrentRow;
    row.Cells[0].Value=txtMaSo.Text;
    row.Cells[1].Value=txtTen.Text;

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn làm như thế này thì mỗi lần load lên thì cái DataGrid đó sẽ nhận dữ liệu luôn của cái DataRow kia rồi .

    Muốn thêm dữ liệu thì bạn add cái datarow kia vào cái DataSet mà bạn đưa vào DataGrid là được .

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Yin Yang
    Chà bạn này có vẻ tư duy gúm, 2 cách viết đó là tuơng đuơng nhau chứ sao lại sai. DataGridViewRow là 1 class nên nó có thể tham chiếu. Với lại bạn ghi gì mà A, B, C chả hỉu gì hết.
    Dễ hiểu hơn nè:

    Mã:
    string A = "Tôi là A";
    string C = "Tôi là C";
    string B = A; // B = "Tôi là A"
    B = C; // lúc này B thay đổi B = "Tôi là C", còn A kô đổi A = "Tôi là A"

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Đem 2 ví dụ khác nhau ra để chứng minh hả? Ngay từ cách logic ban đầu cái A,B,C trên đã sai còn chưa nhận ra.


    DataGridViewRow row = [Tên DataGridView].CurrentRow; (B = A)
    row.Cells[0].Value=txtMaSo.Text;(B = C)
    Xin nhắc lại là bạn bỏ kiểu tư duy máy móc đi. Thứ nhất, trong 2 dòng code trên thì B từ row tự dưng biến thành row.Cells[0].Value (Value chỉ là 1 thuộc tính của 1 Cell).
    Thứ 2, nếu bạn chưa hiểu về cái ví dụ với string mà bạn cho ở trên thì có thể đọc dưới đây:

    -Khi bạn 1 string B=A thì B sẽ chuyển tham chiếu sang A. Và khi gán B=C thì B sẽ chuyển tham chiếu sang C, chẳng còn liên quan gì đến A cho nên dù B hoặc C có thay đổi thế nào thì A vẫn ko thay đổi.

    -Còn nếu sau khi bạn B=C và lại gán B="Tôi là B" thì C cũng chẳng thay đổi theo. Vì chuỗi "Tôi là B" chính là 1 đối tượng string mới và B là tham chiếu sang nó.

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Yin Yang
    -Khi bạn 1 string B=A thì B sẽ chuyển tham chiếu sang A. Và khi gán B=C thì B sẽ chuyển tham chiếu sang C, chẳng còn liên quan gì đến A cho nên dù B hoặc C có thay đổi thế nào thì A vẫn ko thay đổi.
    Đúng ý tớ rồi mà
    Trích dẫn Gửi bởi trungnv
    Mã:
    string A = "Tôi là A";
    string C = "Tôi là C";
    string B = A; // B = "Tôi là A"
    B = C; // lúc này B thay đổi B = "Tôi là C", còn A kô đổi A = "Tôi là A"
    xoắn gì nữa bạn

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •