如何将SQL数据+硬编码数据添加到数据模型类中以便在组合框中进行绑定?

时间:2019-07-04 21:12:00

标签: c# uwp combobox datamodel

我在由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 :(得分:0)

已修复。

让我感到困惑的是,它是存储数据的数据模型类,但是存储了ObservableCollection。

我要做的就是在数据绑定函数中创建一个新的ObservableCollection变量。使用变量,我将所有SQL数据添加到集合中,然后使用.Add函数将Client数据模型类的新实例(包含“ New Client”)添加到集合中。然后,您可以返回该集合以在组合框中使用。

还有一种非常简单的方式对此进行编码。您可以在更新的代码中看到它。

在创建“新客户端”的函数中,我还必须将返回类型更改为数据模型,这样您可以在调用它时将其添加到集合中。

更新的代码(SQL函数中未更改)

创建新的客户数据:

db = mysql.connector.connect(user='root', password='1234', host='localhost', database='sosyalbe')
cursor = db.cursor()
cursor.execute("SELECT * FROM siparisler WHERE siparis_durum ='İptal'")

order = cursor.fetchone()
id = order[0]

dss = 10
cursor.execute("UPDATE siparisler SET urun_baslangic = '%s' WHERE order_id ='%s'" %dss % id)  #errror

cursor.execute("UPDATE siparisler SET urun_baslangic = (?) WHERE id = (?)" (dss, id))   #ERROR

将新的客户端数据和sql数据添加到集合中以进行绑定:

# [IIS] Configure Module elements and properties which are configured in globalModules section 

# Case1: List all native modules
(Get-WebConfiguration //globalmodules).collection -PSPath iis:

# Case4: List all of enabled modules from 'server' level
(get-webconfiguration //modules -PSPath iis:).collection -PSPath iis:

# Case5: Get the attributes for a specific module
$modules=(get-webconfiguration //modules -PSPath iis:).collection
$modules | foreach {if ($_.name -eq "cgiModule") { $_.attributes | select name, value}}