// 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;
}
Web-Service и DataGrid
Кто что может подскажите.
Есть веб-сервис, который из БД выгребает таблицу и отправляет ее. Метод:
PhoneBookDatabaseRecord - класс с полями самой записи + поле Status (запись изменена, добавлена, удалена)
Код:
На клиенте это все помещаеться в 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;
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++ и т.п.)