Csharp: загрузка списка проверенных элементов на основе значения в поле со списком - PullRequest
0 голосов
/ 04 апреля 2020

Я не могу получить ожидаемые результаты в приведенном ниже коде.

Я пытаюсь выбрать один элемент из поля со списком, и мне нужно получить соответствующие значения для выбранного элемента в проверяемом списке Box. Примером является менеджер и репортеры, поэтому, если я выберу одного менеджера, я должен видеть только список тех сотрудников, которые отчитываются перед выбранным менеджером.

enter image description here

Мой проверенный список показывает пустое значение.

Мой код, который я поднимаю на менеджере, - событие изменения выбранного элемента:

private void Cbreporting_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (con.State == ConnectionState.Open)
        {
            con.Close();
        }

        try
        {
            con.Open();
            string sql1 = "Select distinct empname from tbl_emp_details where isdeleted <>1 and [reporting manager]='@lm'";
            SqlCommand com = new SqlCommand(sql1, con);
            com.Parameters.AddWithValue("@lm", Cbreporting.SelectedIndex);

            SqlCommand cmd1 = new SqlCommand(sql1, con);
            datareader = cmd1.ExecuteReader();
            while (datareader.Read())
            {
                checkedListBox1.Items.Add(datareader[0]);
            }

            con.Close();
            datareader.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error", ex.ToString());
        }

    }

1 Ответ

0 голосов
/ 04 апреля 2020

Я вижу 2 командных объекта com и cmd1, и ваш SqlParameter '@lm' назначен на com. Но ваш ExecuteReader использует объект cmd1. Измените ваш код, как показано ниже.

con.Open();
string sql1 = "Select distinct empname from tbl_emp_details where isdeleted <>1 and [reporting manager]='@lm'";
SqlCommand com = new SqlCommand(sql1, con);
com.Parameters.AddWithValue("@lm", Cbreporting.SelectedIndex);

datareader = com.ExecuteReader();
while (datareader.Read())
{
     checkedListBox1.Items.Add(datareader[0]);
}

con.Close();
datareader.Close();
...