Cześć.
Piszę aplikacje WPF do obsługi faktury opartą na bazie danych DB4OBJ
Mam problem z konwersją liczby do ToString("N2").
W momencie dodawania nowego obiektu ( towaru ) wywala mi exception.
Wpisuje 3560 bo konwersja ma zrobić z tego 35.60 ale ta wartość chyba błędnie sie zapisuje albo zapisuje nulla ;/
W zestawieniu na datagridzie nie wpisuje mi się cena:
A gdy staram się dokonać edycji towaru wywala mi exception:
W taki sposób dodaje nowy produkt do bazy:
private void AddNewComodityToInvoiceButton_Click(object sender, RoutedEventArgs e)
{
LabelError.Content = "";
LabelError.Foreground = Brushes.Red;
// sprawdzamy czy pola sa puste
foreach (var tbx in tbxList.Where(textBox => textBox.Text == ""))
{
LabelError.Visibility = Visibility.Visible;
LabelError.Content += "Pole nazwa jest wymagane!";
return;
}
// sprawdzamy czy combobox jest pusty
if (CbSearchList.SelectedValue == null)
{
LabelError.Visibility = Visibility.Visible;
LabelError.Content += "Proszę wybrać stawkę!";
return;
}
if (Regex.IsMatch(NettoPriceTextBox.Text, @"(?<=^| )\d+(\.\d+)?(?=$| )") == false)
{
LabelError.Visibility = Visibility.Visible;
LabelError.Content += "Pole cena netto musi zawierać tylko cyfry!";
return;
}
if (Regex.IsMatch(QuantityTextBox.Text, @"\d") == false)
{
LabelError.Visibility = Visibility.Visible;
LabelError.Content += "Pole ilosc może zawierać tylko cyfry!";
return;
}
// ustawianie kropki w automatyczny sposób
if (NettoPriceTextBox.Text.Count() >= 3 && NettoPriceTextBox.Text.Contains(".") == false)
{
var newString = NettoPriceTextBox.Text.Insert(NettoPriceTextBox.Text.Count() - 2, ".");
NettoPriceTextBox.Text = newString;
}
// jeśli faktura jest pusta
if (invoice.Commoditions == null)
invoice.Commoditions = new List<InvoicePossition>();
// dodawanie nowych towarów
invoice.Commoditions.Add(new InvoicePossition
{
PriceNetto = NettoPriceTextBox.Text,
Quantity = Convert.ToInt32(QuantityTextBox.Text),
Commodity = new Commodity
{
NettoPrice = NettoPriceTextBox.Text,
CommodityName = CommoditionNameTextBox.Text,
Amount = CbSearchList.SelectedValue.ToString()
}
});
DataBaseConnection.db.Store(invoice);
DataBaseConnection.db.Commit();
LabelError.Visibility = Visibility.Visible;
LabelError.Foreground = Brushes.Green;
LabelError.Content = "Dodano Towar pomyślnie!";
foreach (var contr in tbxList)
{
contr.Text = "";
}
}
Jak to rozwiązać?