Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Web-Service и DataGrid

46K
24 мая 2011 года
dts
14 / / 08.10.2009
Всем добрый день!

Кто что может подскажите.

Есть веб-сервис, который из БД выгребает таблицу и отправляет ее. Метод:

PhoneBookDatabaseRecord - класс с полями самой записи + поле Status (запись изменена, добавлена, удалена)

Код:
// Get All Data Method
    [WebMethod]
    public List<PhoneBookDatabaseRecord> GetRecords()
    {
        DbConnection connection = providerVactory.CreateConnection();
        connection.ConnectionString = connectionString;
        connection.Open();

        string sqlText = "SELECT * FROM PhoneBook";
        DbCommand command = providerVactory.CreateCommand();
        command.Connection = connection;
        command.CommandText = sqlText;

        List<PhoneBookDatabaseRecord> recordsList = new List<PhoneBookDatabaseRecord>();
        DbDataReader reader = command.ExecuteReader();
        PhoneBookRecord record = null;
        object value;
        while (reader.Read())
        {
            record = new PhoneBookRecord();
            value = reader["ID"];
            record.ID = (value == DBNull.Value) ? 0 : Convert.ToInt32(value);
            value = reader["FirstName"];
            record.FirstName = (value == DBNull.Value) ? string.Empty : Convert.ToString(value);
            value = reader["SecondName"];
            record.SecondName = (value == DBNull.Value) ? string.Empty : Convert.ToString(value);
            value = reader["Adress"];
            record.Adress = (value == DBNull.Value) ? string.Empty : Convert.ToString(value);
            value = reader["Phone"];
            record.Phone = (value == DBNull.Value) ? string.Empty : Convert.ToString(value);
            value = reader["Email"];
            record.Email = (value == DBNull.Value) ? string.Empty : Convert.ToString(value);

            recordsList.Add(new PhoneBookDatabaseRecord());
            recordsList[recordsList.Count - 1].Record = record;
            recordsList[recordsList.Count - 1].Status = RecordStatus.None;
        }
        connection.Close();
        return recordsList;
    }


На клиенте это все помещаеться в DataGridView:
 
Код:
MyService.Service service = new MyService.Service();
            MyService.PhoneBookDatabaseRecord[] records = service.GetRecords();
            BindingList<MyService.PhoneBookDatabaseRecord> bookRecords = new BindingList<MyService.PhoneBookDatabaseRecord>(new List<MyService.PhoneBookDatabaseRecord>(records));
            dataGridView1.DataSource = bookRecords;


BindingList<MyService.PhoneBookDatabaseRecord>(new List<MyService.PhoneBookDatabaseRecord>(records)); - для того, чтобы в гриде можно было данные редактировать и добавлять.

И вот вопрос: как отловить в гриде изменение/добавление/удаление записей, выставить соотв. статус у записей и вернуть новый массив записей на сохранение/удаление/редактирование веб-сервису. Типа:

public void SaveRecords(List<PhoneBookRecord> records).

Еще использовать в веб-сервисе передачу через DataSet, DataTable и т.п мне нельзя так как потенциально клиент должен быть любым (Java, C++ и т.п.)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог