防止在列表视图中输入重复数据

时间:2013-11-23 09:02:08

标签: c#

我如何防止在列表视图中输入重复数据插入,任何人都可以为此提供帮助,我仍然是C#中的新人

ListViewItem lvi = new ListViewItem();
if (lvwRentBook.Items.Count == 0)
{
    lvi.Text = books.BookCode.ToString();
    lvi.SubItems.Add(books.BookDesc.ToString());
    lvi.SubItems.Add(books.SupplierCode.ToString());
    lvi.SubItems.Add(books.PricePurchase.ToString());
    lvi.SubItems.Add(txtRentPRice.Text.ToString());
    lvi.SubItems.Add(books.PricePenalty.ToString());
    lvi.SubItems.Add("1".ToString());
    lvi.SubItems.Add(books.Author.ToString());
    lvi.SubItems.Add(books.Category.ToString());
    lvi.SubItems.Add(books.Active.ToString());
    lvi.SubItems.Add(books.ModifiedBy.ToString());
    lvi.SubItems.Add(books.ModifiedOn.ToString());
    lvi.SubItems.Add(books.CreatedBy.ToString());
    lvi.SubItems.Add(books.CreatedOn.ToString());
    lvwRentBook.Items.Add(lvi);
}

3 个答案:

答案 0 :(得分:2)

尝试以下

 if(lvwRentBook != null)
 {
    ListViewItem lvi = lvwRentBook.FindItemWithText(books.BookCode.ToString());
    // if it is null means, item does not exist.You can go ahead and add it.
    if (lvi == null)
    {
     lvi = new ListViewItem();

        lvi.Text = books.BookCode.ToString();
        lvi.SubItems.Add(books.BookDesc.ToString());
        lvi.SubItems.Add(books.SupplierCode.ToString());
        lvi.SubItems.Add(books.PricePurchase.ToString());
        lvi.SubItems.Add(txtRentPRice.Text.ToString());
        lvi.SubItems.Add(books.PricePenalty.ToString());
        lvi.SubItems.Add("1".ToString());
        lvi.SubItems.Add(books.Author.ToString());
        lvi.SubItems.Add(books.Category.ToString());
        lvi.SubItems.Add(books.Active.ToString());
        lvi.SubItems.Add(books.ModifiedBy.ToString());
        lvi.SubItems.Add(books.ModifiedOn.ToString());
        lvi.SubItems.Add(books.CreatedBy.ToString());
        lvi.SubItems.Add(books.CreatedOn.ToString());
        lvwRentBook.Items.Add(lvi);
    }
   }

答案 1 :(得分:0)

代码还有其他问题,但在防止重复方面考虑使用HashSet。我不确定你在这里尝试用你的代码做什么,所以我不能给你更多的帮助,但是HashSet会自动防止重复的条目。

http://msdn.microsoft.com/en-us/library/bb359438%28v=vs.110%29.aspx

答案 2 :(得分:0)

我找到的解决方案是将整个ListView包含在UpdatePanel中:

<asp:UpdatePanel ID="udpSiteInvite" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:ListView ID="lsvSiteInvite" InsertItemPosition="FirstItem" DataSourceID="srcSiteInvite"
            OnItemCommand="lsvSiteInvite_ItemCommand" runat="server">

...

        </asp:ListView>
    </ContentTemplate>
</asp:UpdatePanel>

唯一的缺点是,这将重新填充您使用的控件(文本框,至少;不确定DDL)。这对我来说不是问题,但如果它适合你,我想可以清除控件。

相关问题