BindingNavigatorを使用して、DataListViewを使用して商品リストからアイテムを削除します。 (メソッド呼び出しmain.DeleteProduct()はデータベースから削除するリポジトリを呼び出します)。リストアイテムをBindingNavigatorで削除します。正しいアイテムではありません。
..DeleteItem_Clickイベントのコードを改善するには、何か助けが必要です。セルまたは行をクリックしてから、ボタン(BindingNavigator)を削除すると、その行は削除されません。下の行を削除するか、最後の行であれば上の行になり、1行だけであればnullがキャストされます。 bindingSource.Currentは、datagridviewのcurrentrowと同じ項目であるべきではありませんか?
また、バインディングソースを使用して現在のアイテムをキャストしていますか?あなたが持っている場合は、より良いコードの提案をappretiateだろう。
乾杯!
public partial class Form1 : Form
{
private MainBL main = new MainBL();
private List<Product> products = new List<Product>
private void Form1_Load(object sender, EventArgs e)
{
bsProducts.DataSource = products; // BindingSource
bnProducts.BindingSource = bsProducts; // BindingNavigator
dataGridView1.DataSource = bsProducts; //
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
Product product = (Product)bsProducts.Current;
// Putting a breakpoint here, shows the identity property is not the same
// as row selected in datagridview.
main.DeleteProduct(product);
}
この答えは、私はDataGridViewのとDeleteItem機能を持っていた同じ問題をデバッグする私を助けました... – ChenChi