0
私のウィンドウにテキストボックスがあり、btn_addをクリックするとObservable Collectionにそのコンテンツが追加され、dg_VoucherDetailのソースになります。 問題: 初めて使用するとすべてが問題ありませんが、2回目の古いObservableコレクションに置き換えられます。ただし、古いコレクションに新しいアイテムを追加する場合を除き、 、編集セクションでは検索と編集のコレクションアイテムはありません。ここで がコードです:Observable Collectionアイテムが存在する場合は、アイテムを編集します。他に新しいアイテムを追加します。
private void btn_add_Click(object sender, RoutedEventArgs e)
{
_VoucherDetail = new ObservableCollection<VoucherDetail>();
VoucherDetail Voucher = new VoucherDetail();
if (dg_VoucherDetail.HasItems == true)
{
for (int i = 0; i < _VoucherDetail.Count; i++)
{
if (_VoucherDetail[i].LedgerID == SelectedLedgerID)
{
if (_VoucherDetail[i].DefinitiveID == SelectedDefinitiveID)
{
if (_VoucherDetail[i].Credit == Convert.ToDecimal(txt_Amount.Text))
return;
else if (_VoucherDetail[i].Debit == Convert.ToDecimal(txt_Amount.Text))
return;
else
{
Voucher.LedgerID = SelectedLedgerID;
Voucher.DefinitiveID = SelectedDefinitiveID;
if (radio_debit.IsChecked == true)
{
Voucher.Debit = Convert.ToDecimal(txt_Amount.Text);
Voucher.Credit = 0;
}
else if (radio_credit.IsChecked == true)
{
Voucher.Debit = 0;
Voucher.Credit = Convert.ToDecimal(txt_Amount.Text);
}
_VoucherDetail[i] = Voucher;
}
}
else if (_VoucherDetail[i].DefinitiveID != SelectedDefinitiveID)
{
Voucher.LedgerID = SelectedLedgerID;
Voucher.DefinitiveID = SelectedDefinitiveID;
if (radio_debit.IsChecked == true)
{
Voucher.Debit = Convert.ToDecimal(txt_Amount.Text);
Voucher.Credit = 0;
}
else if (radio_credit.IsChecked == true)
{
Voucher.Debit = 0;
Voucher.Credit = Convert.ToDecimal(txt_Amount.Text);
}
_VoucherDetail.Add(Voucher);
}
}
else if (_VoucherDetail[i].LedgerID != SelectedLedgerID)
{
Voucher.LedgerID = SelectedLedgerID;
Voucher.DefinitiveID = SelectedDefinitiveID;
if (radio_debit.IsChecked == true)
{
Voucher.Debit = Convert.ToDecimal(txt_Amount.Text);
Voucher.Credit = 0;
}
else if (radio_credit.IsChecked == true)
{
Voucher.Debit = 0;
Voucher.Credit = Convert.ToDecimal(txt_Amount.Text);
}
_VoucherDetail.Add(Voucher);
}
}
}
if (dg_VoucherDetail.HasItems == false)
{
Voucher.LedgerID = SelectedLedgerID;
Voucher.DefinitiveID = SelectedDefinitiveID;
if (radio_debit.IsChecked == true)
{
Voucher.Debit = Convert.ToDecimal(txt_Amount.Text);
Voucher.Credit = 0;
}
else if (radio_credit.IsChecked == true)
{
Voucher.Debit = 0;
Voucher.Credit = Convert.ToDecimal(txt_Amount.Text);
}
_VoucherDetail.Add(Voucher);
// dg_VoucherDetail.Items.Add(VoucherDetail);
}
dg_VoucherDetail.ItemsSource = _VoucherDetail;
}
internal class VoucherDetail
{
public decimal LedgerID { get; set; }
public decimal DefinitiveID { get; set; }
public decimal Debit { get; set; }
public decimal Credit { get; set; }
}
は素晴らしい作品、私は2週間で見てきたblaze_125最も便利なヘルプ@ありがとう –