Не могу обновить datagridview с bindingsource с

цель:
После нажатия на кнопку Добавить или удалить, datagridview должен быть обновлен с последними данными из документа.

проблема:

datagridview не может быть обновлен после внесения изменений путем удаления или добавление новых данных.

Я использую источник привязки, связанный с источником данных datagridview.

Я пробовал все с другим решением и читал советы с разных форумов, но все же я не могу решить эту проблему.

Я также попытался использовать этот синтаксис " BindingSource.ResetBindings (false)", "BindingSource.Refresh () " и т. д., Но без результата.

ссылки ниже:

Как обновить объектом bindingsource

http://www.eggheadcafe.com/community/aspnet/2/10114324/datagridview-refresh-from-another-form.aspx

http://blogs.msdn.com/b/dchandnani/archive/2005/03/15/396387.aspx

http://bytes.com/topic/c-sharp/answers/812061-problem-refresh-datagridview

    bSrcStock.DataSource = myProductrepository.GetAllProductList();


    dgridStock.DataSource = null;
    dgridStock.DataSource = bSrcStock;
    bSrcStock.ResetBindings(true);


    dgridStock.Columns[0].Width = 101;
    dgridStock.Columns[1].Width = 65;
    dgridStock.Columns[2].Width = 80;
    dgridStock.Columns[3].Width = 120;
    dgridStock.Columns[4].Width = 90;

2 ответов


Я столкнулся с этой же проблемой и обнаружил, что проблема заключается в инициализации BindingSource внутри статического конструктора (класс был одноэлементным). Поняв это, я переместил код в вызывающее событие, и он, наконец, работал без необходимости назначать null или вызывать метод clear. Надеюсь, это поможет.


нет необходимости определять столбцы (если вы действительно не хотите...)

затем просто вызовите метод refreshDataGridView каждый раз, когда вы добавляете или удаляете что-то из своего списка...

    public List<CustomItem> ciList = new List<CustomItem>();

    CustomItem tempItem = new CustomItem();
    tempItem.Name = "Test Name";

    ciList.add(tempItem);
    refreshDataGridView();

    private void refreshDataGridView()
    {
        dataGridView1.DataSource = typeof(List<>);
        dataGridView1.DataSource = ciList;
        dataGridView1.AutoResizeColumns();
        dataGridView1.Refresh();
    }