我如何防止在列表视图中输入重复数据插入,任何人都可以为此提供帮助,我仍然是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);
}
答案 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)。这对我来说不是问题,但如果它适合你,我想可以清除控件。