BindingNavigator를 사용하여 datagridview를 통해 제품 목록에서 항목을 삭제합니다. (main.DeleteProduct() 메소드 호출은 데이터베이스에서 삭제할 저장소를 호출한다).올바른 항목이 아닌 BindingNavigator가있는 목록 항목을 삭제하십시오.
..DeleteItem_Click 이벤트의 코드를 향상시키는 데 도움이 필요합니다. 셀 또는 행을 클릭 한 다음 단추 (BindingNavigator)를 삭제하면 절대로 해당 행이 삭제되지 않습니다. 아래의 행을 삭제하거나, 마지막 행, 위의 행 및 하나의 행만 삭제하면 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);
}
... :
ClearCache()
은 잘 알려진 DataContext에 확장 기능입니다 – ChenChi