Как добавить данные SQL + жестко закодированные данные в класс модели данных для связывания в поле со списком? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть имена клиентов в поле со списком, который связан с данными SQL.Мне нужно добавить еще одного клиента в поле со списком под названием «Новый клиент».Я знаю, как это сделать, используя наборы данных, но не знаю, как это сделать.Мне нужно добавить новый экземпляр класса модели данных клиента с «новым клиентом» и ID = -1.

Я пытался создать метод, который создает «новый клиент», но он всегда перезаписывает данные SQL, мне нужно каким-то образом объединить новый клиент с данными, которые были установлены SQL.

Code to get SQL data into the Client data model. 

    var clients = new ObservableCollection<Client>();
                try
                {
                using (SqlConnection conn = new   SqlConnection(connectionString))
                {
                    conn.Open();
                    if (conn.State == System.Data.ConnectionState.Open)
                    {
                        using (SqlCommand cmd = conn.CreateCommand())
                        {
                            cmd.CommandText = "select CLIENT_ID, CLIENT_NAME, EMAIL, ADDRESS_LINE_1, ADDRESS_LINE_2, ADDRESS_LINE_3, ADDRESS_LINE_4, POSTCODE, TELEPHONE_NUMBER from CLIENT";


                            {
                                using (SqlDataReader reader = cmd.ExecuteReader())
                                {
                                    while (reader.Read())
                                    {
                                        var client = new Client
                                        {
                                            clientID = reader.GetInt32(0),
                                            clientName = reader.GetString(1),
                                            clientEmail = reader.GetString(2),
                                            add1 = reader.GetString(3),
                                            add2 = reader.GetString(4),
                                            add3 = reader.GetString(5),
                                            add4 = reader.GetString(6),
                                            postcode = reader.GetString(7),
                                            telephoneNumber = reader.GetString(8)
                                        };
                                        clients.Add(client);
                                    }
                                }
                            }
                        }
                    }
                    return clients;
                }
            }

Код для добавления «Нового клиента»:

  public ObservableCollection<Client> newClientRow()
    {
        var clients = new ObservableCollection<Client>();

        var client = new Client
        {
            clientID = -1,
            clientName = "New Client",
            clientEmail = "f",
            add1 = "f",
            add2 = "R",
            add3 = "l",
            add4 = "F",
            postcode = "f",
            telephoneNumber = "01244"
        };

        clients.Add(client);

        return clients;
    }

Код для привязки данных в поле со списком:

public ObservableCollection<Client> Source
    {
        get
        {

            daClient daClient = new daClient();
            newClientRow();
            return daClient.GetClients((App.Current as App).ConnectionString);

        }
    }

Я получаю только те данные, которые были созданы изSQL, мне нужен "новый клиент" для объединения.

1 Ответ

0 голосов
/ 05 июля 2019

Fixed.

Я был сбит с толку, думая, что это класс модели данных, который хранит данные, но это ObservableCollection.

Все, что мне нужно было сделать, это создать новую переменную ObservableCollection внутри функции привязки данных.С помощью переменной я добавил все данные SQL в коллекцию, а затем использовал функцию .Add для добавления нового экземпляра класса модели данных клиента (который содержит «Новый клиент») в коллекцию.Затем вы можете вернуть эту коллекцию для использования в поле со списком.

Существует также очень простой способ кодирования.Что вы можете видеть в обновленном коде.

Также в функции для создания «нового клиента» мне пришлось изменить тип возвращаемого значения на модель данных, чтобы вы могли добавить его в коллекцию при вызове.

Обновленный код (в функции SQL ничего не изменилось)

Создание новых данных клиента:

 private Client newClientRow()
    {
        var clients = new ObservableCollection<Client>();

        var client = new Client
        {
            clientID = -1,
            clientName = "New Client",
            clientEmail = "f",
            add1 = "f",
            add2 = "R",
            add3 = "l",
            add4 = "F",
            postcode = "f",
            telephoneNumber = "01244"
        };
        return client;
    }

Добавление новых данных клиента и данных sql в коллекцию для привязки:

 public ObservableCollection<Client> Source
    {
        get
        {   
            daClient daClient = new daClient();
            ObservableCollection<Client> clients = new ObservableCollection<Client>(daClient.GetClients((Application.Current as App).ConnectionString))
            {
                //This works the same as using clients.Add(newClientRow()); - just put it inside the curly bracked when initializing the ObservableCollection. 
                newClientRow()
            };
            return clients;
        }
    }
...