обновить dataGridView в приложении winform - PullRequest
0 голосов
/ 03 августа 2011

У меня в приложении winform есть dataGridView, и я отобразил данные из класса DAL с помощью dataSet, например:

DataSet ds2 = DAL.Display_all();
dataGridView1.DataSource = ds2;
dataGridView1.DataMember = "To_display";

Как я могу обновить данные обратно, если кто-то изменит данные в gridView (янужно отшлифовать обратно в класс DAL)?

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Используйте метод DataAdapter.Update.

Передайте DataSet в качестве параметра.

Вы можете использовать DataSet.HasChanges, чтобы увидеть, есть ли у вас какие-либо изменения перед вызовом метода Update.

0 голосов
/ 03 августа 2011

Если вы перебираете каждую строку DataGridView, вы можете использовать приведенный ниже метод для получения значения указанного столбца в определенной строке.

    private T GetDataGridViewTextBoxValue<T>(int rowIndex, string columnName)
    {
        try
        {
            return (T)Convert.ChangeType(dataGridViewImport.Rows[rowIndex].Cells[columnName].Value, typeof(T));
        }
        catch (Exception e)
        {
            throw new InvalidOperationException(String.Format("Row : {0}, column : {1} could not be cast to {2}", rowIndex, columnName, typeof(T)), e);
        }
    }

И вы можете использовать этот метод следующим образом.

for(int i=0;i< ds2.Tables[0].Rows.Count(); i++)
{
    var column1 = GetDataGridViewTextBoxValue<string>(i, "column1");
    //Get the rest of the row values.
    //In your DAL class you must have a Method that updates the row 
    //and then just pass in the values that you want.
}
0 голосов
/ 03 августа 2011

попробуйте это:

dataGridView1.ResetBindings();

Заставляет элемент управления, связанный с BindingSource, перечитать все элементы в списке и обновить отображаемые значения.MSDN

надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...