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ố 12 kết quả

Đề tài: Cách xóa nhiều dòng trong gridview trên C# như thế nào?

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

    Mặc định Cách xóa nhiều dòng trong gridview trên C# như thế nào?

    mình có một gridview và một checkbox, mình muốn xóa nhiều dòng trong girdview đấy khi chọn nhiều checkbox. Nhưng mình làm thì chỉ xóa được có một dòng thôi khi chọn nhiều checkbox và xóa thì nó hiện thông báo này

    " Index was out of range. Must be non-negative and less than the size of the collection."
    Mong các bạn giúp mình.
    học học nữa học mãi đúp học lại

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

    cho mình hỏi bạn xoá dòng khi load csdl len trên datagridview rồi hay là bạn nhập dữ liệu trực tiếp lên dtgridview rồi xoá. nếu là bạn load dl lên datagridview mà muốn xoá nhiều dòng cùng một lúc thì bạn có thề làm như sau
    - khai báo kiểu string ma để chứa mã
    - thứ hai bạn dùng vòng lập như sau:
    foreach(DataGridViewRow row in dtgridview Rows)
    {
    if ((bool)row.Cells[0].FormattedValue)
    {
    ma = row.Cells[1].Value.ToString().Trim();
    // Câu lệnh sql xoá dữ liệu code ở đây

    }
    }

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

    Trích dẫn Nguyên bản được gửi bởi dien Xem bài viết
    foreach(DataGridViewRow row in dtgridview Rows)
    {
    if ((bool)row.Cells[0].FormattedValue)
    {
    ma = row.Cells[1].Value.ToString().Trim();
    // Câu lệnh sql xoá dữ liệu code ở đây

    }
    }
    Cái này ko ăn thua.Nếu bạn để visiable của id là false thì ma=null
    Mình cũng vất vả với cái checkbox này mà vẫn chưa được

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

    Mấy cái checkbox nằm trong DTGridviu luôn hay sao hả bạn@@nếu nó nằm trong thì chuyện này cũng đơn giản mà bạn. Duyệt qua từng dòng trong Datatable. Cứ dòng nào có cột (Checkbox) chứa giá trị là true thì xóa cái dòng đó đi ví dụ thế này(Căn bản thì cái Gridview chỉ alf sự hiển thị của 1 datatable hay view thôi. Thay vì thao tác trên Grid thì ta thao tác với datatable)
    Code:
    For each datarow row in dt.rows
    {
    if (row["IsCheck"]==true)
    {
    // Xóa dòng này đi với ID = row["ID"].tostring;
    }
    }
    không biết có đúng ý bạn không. Nếu không thì bạn nói rõ rõ tý đi mình giúp cho
    bongda24h.tv

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    102

    Trích dẫn Nguyên bản được gửi bởi elkidvnn1 Xem bài viết
    Code:
    For each datarow row in dt.rows
    {
    if (row["IsCheck"]==true)
    {
    // Xóa dòng này đi với ID = row["ID"].tostring;
    }
    }
    Bạn elkidvnn1 có thể viết chi tiết hơn được không.Mình cũng nghĩ phải xóa ntn đó trong datatable

    Mình xóa được dòng khi check nhưng với trường hợp mình để cột id hiển thị .Còn để nó thuộc tính là visiable=false thì báo giá trị id gán ko hợp lệ

    Bài mình làm như này:
    Trích dẫn Nguyên bản được gửi bởi elkidvnn1 Xem bài viết
    Code:
    For each datarow row in dt.rows
    {
    if (row["IsCheck"]==true)
    {
    // Xóa dòng này đi với ID = row["ID"].tostring;
    }
    }
    Bạn elkidvnn1 có thể viết chi tiết hơn được không.
    Mình cũng xóa được dòng khi check nhưng với trường hợp mình để cột id hiển thị .Còn để nó thuộc tính là visiable=false thì báo giá trị id gán ko hợp lệ

    Bài mình làm như này:
    Code:
    <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
                DataKeyNames="ID" AutoGenerateColumns="False" 
              " Height="221px" 
                Width="745px">
                <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                <Columns>
                   
                  <asp:TemplateField HeaderText="CheckAll">
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkSelectAll" runat="server" AutoPostBack="true" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true"  />
                        </ItemTemplate>
                    </asp:TemplateField>
    
       //dòng này để hiển thị ra bình thường thì dc
    
                 <asp:BoundField DataField="ID" />
    
                    <asp:TemplateField HeaderText="Họ Tên">
                        <ItemTemplate>
                            <asp:Label ID="lblName" runat="server" Text='<%# Bind("name") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Tuổi">
                        <ItemTemplate>
                            <asp:Label ID="lblAge" runat="server" Text='<%# Bind("Age") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Age") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:CommandField HeaderText="Tùy Chọn" ShowSelectButton="True" SelectText="Chon tu day cua toi">
                        <ItemStyle Font-Underline="False" HorizontalAlign="Center" VerticalAlign="Middle" />
                    </asp:CommandField>
                </Columns>
              
            </asp:GridView>
    Code sử lý

    [/CODE]
    protected void btnXoa_Click(object sender, EventArgs e)
    {

    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
    // int id = Convert.ToInt32(dt.Rows[a]["id"].ToString());
    GridViewRow row = GridView1.Rows[i];
    bool isChecked = ((CheckBox)row.FindControl("chkSelect")).Checked;

    if (isChecked)
    {
    // Column 2 is the name column
    int id = int.Parse(GridView1.Rows[i].Cells[1].Text);
    Delete(id); //truyền tham số vào để xóa
    }
    }
    _Bindata();
    }

    [/CODE]


    Code này chạy ngon lành.Chọn vào vài row nào đó,Click delete ---Ok

    Bây giờ đổi mỗi thế này

    Code:
    <asp:BoundField DataField="ID" Visible="False" />
    báo lỗi.

    Nhân tiện ai làm được cái checkAll nữa chỉ giúp mình với.

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

    Mặc định Cách xóa nhiều dòng trong gridview trên C# như thế nào?

    Thay vì tham chiếu từ trường id thì bạn tham chiếu từ trường khác cũng được mà. cái nút check all thì khi check vào thì duyệt từ 0 - GridView1.Rows.Count dòng nào chưa check thì cho nó check. uncheck cũng tương tự thế thôi.

  7. #7
    Ngày gia nhập
    02 2009
    Bài viết
    102

    Trích dẫn Nguyên bản được gửi bởi dinha3 Xem bài viết
    Thay vì tham chiếu từ trường id thì bạn tham chiếu từ trường khác cũng được mà. cái nút check all thì khi check vào thì duyệt từ 0 - GridView1.Rows.Count dòng nào chưa check thì cho nó check. uncheck cũng tương tự thế thôi.
    Vậy khi muốn sửa xóa bạn lấy ID ở đâu vậy ? Cách của bạn có lấy được ID không ?

  8. #8
    Ngày gia nhập
    02 2009
    Bài viết
    102

    Cái này chẳng thấy ai trả lời cho mình nhỉ.Tình hình này phải dùng thêm devexpress thôi

  9. #9
    Ngày gia nhập
    06 2011
    Nơi ở
    Hưng Yên
    Bài viết
    1

    Mặc định Trả lời câu hỏi của bạn

    Mình đã làm xóa nhiều dòng chọn trên gridview, gửi bạn tham khảo.

    private void cmdXoa_Click(object sender, EventArgs e)
    {
    //Vòng lặp chọn những phần tử đang chọn trong gridview
    for (int i = gridsinhvien.SelectedRows.Count-1; i >=0; i--)
    {
    //Lấy dòng chọn trong gridview
    string ma = gridsinhvien.SelectedRows[i].Cells[0].Value.ToString();

    //Thức hiện xóa
    Connection.Moketnoi();
    string sqlDelete = "Delete from sinhvien where masv ='" + ma + "'";
    cmd = new SqlCommand(sqlDelete, Connection.cn);
    cmd.ExecuteNonQuery();
    }
    HienDL();
    Connection.Dongketnoi();
    }

    Ví dụ là một bài tập lập trình C#(vs2008) kết nối + phi kết nối.
    Mình thao tác xóa nhiều dong gridview ở phần kết nối.

    Tri_Hung
    Attached Files Attached Files
    • Kiểu file: rar VD.rar (147.7 KB, 486 views)

  10. #10
    Ngày gia nhập
    02 2009
    Bài viết
    102

    Trích dẫn Nguyên bản được gửi bởi x8_2007 Xem bài viết
    Mình đã làm xóa nhiều dòng chọn trên gridview, gửi bạn tham khảo.

    private void cmdXoa_Click(object sender, EventArgs e)
    {
    //Vòng lặp chọn những phần tử đang chọn trong gridview
    for (int i = gridsinhvien.SelectedRows.Count-1; i >=0; i--)
    {
    //Lấy dòng chọn trong gridview
    string ma = gridsinhvien.SelectedRows[i].Cells[0].Value.ToString();

    //Thức hiện xóa
    Connection.Moketnoi();
    string sqlDelete = "Delete from sinhvien where masv ='" + ma + "'";
    cmd = new SqlCommand(sqlDelete, Connection.cn);
    cmd.ExecuteNonQuery();
    }
    HienDL();
    Connection.Dongketnoi();
    }

    Ví dụ là một bài tập lập trình C#(vs2008) kết nối + phi kết nối.
    Mình thao tác xóa nhiều dong gridview ở phần kết nối.

    Tri_Hung
    Thanks bạn .Nhưng bạn làm trên datagridview mà.Trên web thường dùng gridview cơ.

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

  1. ADO.NET Cách xóa nhiều dòng trong GridView Control Devexpress?
    Gửi bởi pnlongpro trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 01-06-2013, 08:13 PM
  2. Database Cách cập nhật nhiều dòng trực tiếp trên GridView WPF?
    Gửi bởi billsang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 16-03-2012, 03:36 PM
  3. ADO.NET xóa nhiều dòng trên listview trong C#?
    Gửi bởi banlinhviet trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 21-03-2011, 11:37 AM
  4. Xóa nhiều dòng 1 lúc trong gridview C#?
    Gửi bởi congtuazx trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 18-10-2009, 02:50 PM
  5. Xóa nhiều dòng 1 lúc trong gridview
    Gửi bởi congtuazx trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 3
    Bài viết cuối: 18-10-2009, 11:01 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