Hiển thị kết quả từ 1 đến 7 / 7
  1. #1
    Tham gia
    10-10-2007
    Location
    tphcm
    Bài viết
    7
    Like
    0
    Thanked 0 Times in 0 Posts

    Lỗi vòng lập foreach khi lam nut multiple delete trên datalist

    Em có 1 datalist voi code design nhu sau :
    <aspataList ID="dtlEnterprise" runat="server" DataKeyField="EnterpriseID"
    onitemcommand="dtlEnterprise_ItemCommand" RepeatColumns="2" Width="100%">
    <ItemTemplate>
    <table style="width: 100%;">
    <tr>
    <td rowspan="5" style="text-align: center; vertical-align: top; width: 2%">
    <table class="style1" style="text-align: center" width="1%">
    <tr>
    <td style="width: 5%">
    <asp:CheckBox ID="cbitem" runat="server" AutoPostBack="True"
    oncheckedchanged="cbitem_CheckedChanged" />
    </td>
    <td style="width: 95%">
    <asp:ImageButton ID="Image1" runat="server" Height="100px"
    ImageUrl='<%# Eval("Picture") %>' Width="80px"
    CommandArgument='<%# Eval("EnterpriseID") %>' CommandName="Edit" />
    </td>
    </tr>
    </table>
    </td>
    <td style="text-align: left; width: 20%">
    <asp:Label ID="Label1" runat="server" Text="Công ty :"></asp:Label>
    </td>
    <td>
    <asp:Label ID="lblName" runat="server" ForeColor="#66FF"
    Text='<%# Eval("Name") %>'></asp:Label>
    </td>
    </tr>
    <tr>
    <td style="text-align: left">
    <asp:Label ID="Label7" runat="server" Text="Điện Thoại :"></asp:Label>
    </td>
    <td>
    <asp:Label ID="lbldienthoai" runat="server" Text='<%# Eval("Phone") %>'></asp:Label>
    </td>
    </tr>
    <tr>
    <td style="text-align: left">
    <asp:Label ID="Label9" runat="server" Text="Qui mô :"></asp:Label>
    </td>
    <td>
    <asp:Label ID="lblScale" runat="server" Text='<%# Eval("Scale") %>'></asp:Label>
    </td>
    </tr>
    <tr>
    <td style="text-align: left">
    <asp:Label ID="Label13" runat="server" Text="Website :"></asp:Label>
    </td>
    <td>
    <asp:HyperLink ID="hplwebsite" runat="server"
    NavigateUrl='<%# Eval("Website") %>' Text='<%# Eval("Website") %>'></asp:HyperLink>
    &nbsp;&nbsp;
    </td>
    </tr>
    <tr>
    <td style="text-align: left; width: 40%">
    Tổng Tin Tuyển Dụng :
    </td>
    <td>
    (<asp:Label ID="Label14" runat="server" Text='<%# Eval("TongBaiTin") %>'></asp:Label>
    )<asp:LinkButton ID="lkbxem" runat="server">Xem</asp:LinkButton>
    </td>
    </tr>
    </table>
    </ItemTemplate>
    <HeaderTemplate>
    <table style="width: 100%">
    <tr style="color: Yellow; font-weight: bold; background-color: Green">
    <th align="left">
    <asp:CheckBox ID="cbAll" runat="server" AutoPostBack="True"
    OnCheckedChanged="cbAll_CheckedChanged2" />
    Set All
    </th>
    <th align="right">
    <asp:Button ID="btnxoa" runat="server" CausesValidation="False"
    CommandName="Delete" Enabled="False" Text="Xóa" />
    &nbsp;&nbsp;
    </th>
    </tr>
    </table>
    </HeaderTemplate>
    </aspataList>
    hiện em đang muốn làm nút delete multiple tren datalist nay voi đk khi checkbox dc check vào thì nó delete item đó
    và code cua em nhu sau:
    protected void dtlEnterprise_ItemCommand(object source, DataListCommandEventArgs e)
    {
    Button btnxoa = (Button)dtlEnterprise.Controls[0].FindControl("btnxoa");
    if (e.CommandName == "Edit")
    {
    string ID = e.CommandArgument.ToString();
    Response.Redirect("Enterprise_Edit.aspx?Enterprise ID=" + ID);
    }
    else
    {
    if (e.CommandName == "Delete")
    {
    int ItemIndex = 0;
    foreach (DataListItem dtlitem in dtlEnterprise.Items)
    {
    int id = Convert.ToInt32(dtlEnterprise.DataKeys[ItemIndex]);
    CheckBox cb2 = (CheckBox)dtlitem.FindControl("cbItem");
    if (cb2.Checked == true)
    {
    btnxoa.Attributes.Add("OnClick","javascript:return confirm('Bạn có muốn xóa item này không ???'");
    enter.Remove(id);
    Load_data();
    }
    ItemIndex++;
    }
    }
    }
    }
    hiện ko bít bị lội gì mà nó báo lỗi ở chỗ vòng lặp foreach
    Quote Quote

  2. #2
    Tham gia
    15-01-2009
    Location
    tp Hồ CHí Minh
    Bài viết
    224
    Like
    2
    Thanked 8 Times in 8 Posts
    nó báo lỗi gì sao bạn ko post lên đây nhỉ?

  3. #3
    Tham gia
    10-10-2007
    Location
    tphcm
    Bài viết
    7
    Like
    0
    Thanked 0 Times in 0 Posts
    ah quên em quên post cho lỗi
    Nó lỗi ở chỗ foreach(DataListItem item in dtlEnterprise.Items)
    nó bôi ngay chỗ chữ "in"
    cau bao loi la vầy nè:
    "Collection was modified; enumeration operation may not execute."
    Được sửa bởi phamthieugia2008 lúc 15:42 ngày 30-04-2010

  4. #4
    Tham gia
    01-10-2009
    Bài viết
    279
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi phamthieugia2008 View Post
    ah quên em quên post cho lỗi
    Nó lỗi ở chỗ foreach(DataListItem item in dtlEnterprise.Items)
    nó bôi ngay chỗ chữ "in"
    cau bao loi la vầy nè:
    "Collection was modified; enumeration operation may not execute."
    Lỗi chỉ rất là rõ: Khi collection đã thay đổi số phần tử thì bạn không thể nào mà dùng foearch được đâu. Do vậy hãy dùng for đi cho nó lành.Rõ ràng bạn đã xóa nó đi rồi thì lấy đâu ra nữa mà foreach ở phần tử tiếp theo?

  5. #5
    Tham gia
    10-10-2007
    Location
    tphcm
    Bài viết
    7
    Like
    0
    Thanked 0 Times in 0 Posts
    em đã chuyển sang vòng for nhưng nó chĩ remove dc 1 item
    code của em như sau :
    for (int i = 0; i < dtlEnterprises.Items.Count; i++)
    {
    CheckBox cbitem = (CheckBox)dtlEnterprises.Items[i].FindControl("cbItem");
    int id = Convert.ToInt32(dtlEnterprises.DataKeys[i]);
    if (cbitem.Checked)
    {

    user.Remove(id);

    LoadData();
    }
    }

  6. #6
    Tham gia
    01-10-2009
    Bài viết
    279
    Like
    0
    Thanked 0 Times in 0 Posts
    sao không dùng giải pháp này nhỉ? Làm một vòng lặp (foreach hay for đều ok) để duyệt qua các item bị checked, duyệt để add vào một array. Sau đó làm vòng lặp duyệt qua array mới này và xóa thôi. Xem thử có ok không?

  7. #7
    Tham gia
    10-10-2007
    Location
    tphcm
    Bài viết
    7
    Like
    0
    Thanked 0 Times in 0 Posts
    thanks anh nhìu, cuối cùng nhờ sự gợi ý của anh ve việc thêm cái array em đã chạy ok rùi

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •