组合框中的nvarchar值赢得';t过滤数据,如果值是西里尔字母,在拉丁语中是这样

本文关键字:如果 拉丁语 过滤 nvarchar 组合 数据 | 更新日期: 2023-09-27 17:58:36

我有一个填充组合框的方法

using (SqlConnection conn = new SqlConnection(ConString))
{
    // DO REMEMBER TO OPEN THE CONNECTION!!!  
    conn.Open();
    // Connection Established  
    SqlCommand command = new SqlCommand("SELECT * FROM monitoring", conn);
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            string item = reader[11].ToString();
            comboBoxPretraga.Items.Add(item);
        }
    }
}

此外,我还有一个DropDownClosed事件。它应该从combo中获取值,并在此基础上用同一行的数据填充文本框。

using (SqlConnection conn = new SqlConnection(ConString))
{
    conn.Open();
    // Connection Established  
    SqlCommand command = new SqlCommand("SELECT * FROM monitoring monitoring where konzervator_ime_prezime='" + comboBoxPretraga.Text + "'", conn);
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            string tlo = reader[2].ToString();
            textBox_TloI.Text = tlo;
        }
    }
}

当我启动我的应用程序时,组合框中会显示正确的值。但是,当我选择一个西里尔字母的值(例如:фдгдфГд(时,textBox_TloI不会得到任何数据。但是,当我选择一个拉丁值时,它可以正常工作。问题出在组合框值中。因为,如果我从组合框中选择了拉丁字母,它会在文本框中显示西里尔字母。它似乎没有从组合框中获得正确的西里尔字母值进行过滤。

组合框中的nvarchar值赢得';t过滤数据,如果值是西里尔字母,在拉丁语中是这样

当您设置文本框的txt时,您可能需要设置区域性信息

string tlo = reader[2].ToString(CultureInfo.CurrentCulture);