2016-08-07 23 views
2

Ich bin neu zu XAML und C# Wie kann ich meine Schaltfläche Click-Ereignis verhindern, dass eine neue Zeile hinzugefügt bereits zur Listenansicht, wenn die ProductIDSchaltfläche Click-Ereignis verhindern, fügt Zeile unter der Bedingung zur Listenansicht

existiert
private void btnAddToOrder_Click(object sender, RoutedEventArgs e) 
{ 
    //addtoorders 
    if (listStocks.SelectedIndex >= 0) 
    { 
     DataRowView row = (DataRowView)listStocks.SelectedItems[0]; 

     List<Orders> orders = new List<Orders>(); 
     orders.Add(new Orders() 
     { 
      ProductID = row["productID"].ToString(), 
      ProductName = row["productName"].ToString(), 
      Price = Convert.ToDouble(row["sellingPrice"]), 
      Quantity = Convert.ToInt32(row["quantity"]) 

     }); 
     listOrders.Items.Add(orders); 
     } 
} 
+1

Hoffe, dass Sie nicht neu sind, Fragen zu stellen. Alle notwendigen Details sollten für andere gegeben werden, um zu verstehen, worüber Sie sprechen. –

+0

Es tut mir sehr Leid Lex Li, Es ist mein erstes Mal hier ein Problem zu posten. (y) –

Antwort

1

Warum zuerst ein neues Objekt von Orders erstellen?

können Sie LINQ verwenden, die

using System.Linq; 

erfordert und dann

var found = ordersobject.FirstOrDefault(x => x.Contains(row["productID"].ToString())); //Replace ordersobject with the Orders object that you have created 
mit

Schließlich, wenn var das Produkt also kehrt null fügen Sie dann gefunden,

private void btnAddToOrder_Click(object sender, RoutedEventArgs e) 
{ 
    //addtoorders 
    if (listStocks.SelectedIndex >= 0) 
    { 

    DataRowView row = (DataRowView)listStocks.SelectedItems[0]; 

    var found = ordersobject.FirstOrDefault(x=>x.Contains(row["productID"].ToString())); 


     if(found == null) 
     { 
      //According to my knowledge a new object i.e., 
      //List<Orders> orders = new List<Orders>(); doesn't have to be defined below 
      //provided that you have defined an object of class Orders before, 
      //unless you want to create various objects of Orders. 
      //Which will cause a lot of trouble in future. 
      List<Orders> orders = new List<Orders>(); 
      orders.Add(new Orders() 
      { 
       ProductID = row["productID"].ToString(), 
       ProductName = row["productName"].ToString(), 
       Price = Convert.ToDouble(row["sellingPrice"]), 
       Quantity = Convert.ToInt32(row["quantity"]) 

      }); 
      listOrders.Items.Add(orders); 
      } 
     } 
    } 
} 
+0

es hat mein Problem nicht gelöst, da ich nichts über andere Sachen wie LinQ weiß. Aber danke für deine Mühe. Ich habe es sehr geschätzt. Ich werde wieder an meinen Codes arbeiten und versuchen, es zu lösen. Ich werde später ein Update veröffentlichen. –

+0

Traurig zu wissen :(Es ist in Ordnung, wir alle lernen Schritt für Schritt. Wenn Sie interessiert sind, können Sie http://www.tutorialspoint.com/linq/ für Anfänger Tutorials auf LinQ überprüfen. Vergnügen ist ganz auf meiner Seite, halten Sie uns aktualisiert und das Allerbeste. – ZerosAndOnes

1

glaube ich diesen Code kann Ihnen helfen:

private void btnAddToOrder_Click(object sender, RoutedEventArgs e) 
{ 
    //addtoorders 
    if (listStocks.SelectedIndex >= 0) 
    { 
     DataRowView row = (DataRowView)listStocks.SelectedItems[0]; 
     Orders o=(Orders)row; 
     List<Orders> orderlist=(List<Orders>)listOrders.ItemsSource; 
     if(orderlist.Find(x=>x.PRoductID==c1.PRoductID)!=null) 
     { 
      MessageBox.Show("This Product already exists!"); 
     } 
     else 
     { 
      listOrders.Items.Add(orders); 
     } 

    } 

}

1
private void btnAddToOrder_Click(object sender, RoutedEventArgs e) 
    { 


     //addtoorders 
     if (listStocks.SelectedIndex >= 0) 
     { 
      DataRowView row = (DataRowView)listStocks.SelectedItems[0]; 

      Orders newOrder = new Orders() 
      { 
       ProductID = row["productID"].ToString(), 
       ProductName = row["productName"].ToString(), 
       Price = Convert.ToDouble(row["sellingPrice"]), 
       Quantity = Convert.ToInt32(row["quantity"]) 

      }; 
      List<Orders> orders = new List<Orders>(); 
      // 
      bool found = false; 
      foreach(Orders order in orders) 
      { 
       if (order.Equals(newOrder)) 
       { 
        //if Found Order Equal NewOrder 
        found = true; 
        break; 
       } 
      } 
      if(found == true) 
      { 
       Console.WriteLine("We are Found Order = NewOrder"); 
       return; //Exit From Method 
      } 
      //If Found == false 
      orders.Add(newOrder); 
      listOrders.Items.Add(orders); 
     } 
    }