Praveen_P Ответов: 2

Получить разделенные запятыми значения проверенных элементов значения CheckedListBox и перейти к условию Where в запросе


Как получить разделенные запятыми значения проверяемых элементов значения CheckedListBox и передать их в sql запрос where condition

любить
select * from table_name where t_id IN ('8','9')

Thomas Daniels

Не могли бы вы добавить больше объяснений, пожалуйста?

Praveen_P

Привет, я обновил свой вопрос, любое решение

Tom Marvolo Riddle

Не ясно.предоставьте дополнительную информацию

Praveen_P

у меня есть элемент управления ретранслятором , мне нужно загрузить в него данные в соответствии с выбранными элементами списка флажков, я использую следующий код для загрузки элемента управления ретранслятором

по каждому элементу (listitem элемент LST в Чкм.Предметы)
{
если (ЛСТ.Некоторые)
{
строку стр = "выбрать * из таблицы table_name, где t_id='" + Чкм.SelectedValue + "'";
DataTable dt = новый DataTable();
ДТ = кон.выберите(ул.);
если (ДТ.Строк.Count >= 1)
{
rptr.Источник данных = ДТ;
rptr.Привязку();
}

}
}

но работает только одно выбранное значение. Не работает несколько выбранных значений.

♥…ЯҠ…♥

Вы уверены, что итерация работает нормально? если вы установите флажок 3, то произойдет трехкратная итерация?

Praveen_P

итерация работает нормально, но обратите внимание на мой вопрос, мне нужно получить все выбранные значения флажка и передать его в запрос . Спасибо

♥…ЯҠ…♥

Добавлено мое решение попробуйте и дайте мне знать

Praveen_P

к дай мне попробовать

2 Ответов

Рейтинг:
19

♥…ЯҠ…♥

Привет Правин,

Вы можете попробовать этот код

string whereCndn = string.Empty;
foreach (var item in ChkM.SelectedItems)
        {
            if (item.Selected)
            {
               whereCndn += item.SelectedValue + ","; //Here you will get set of selected checkbox value like (8,9,)
            }
        }

        string str = "select * from table_name where t_id IN ("+ whereCndn.Remove(whereCndn.Length - 1) +")"; //Removing last comma character from the string and putting it in string
               DataTable dt = new DataTable();
                dt = con.select(str);
                if (dt.Rows.Count >= 1)
                {
                    rptr.DataSource = dt;
                    rptr.DataBind();
                }

Надеюсь, это вам немного поможет.

С уважением,
РК


Praveen_P

Привет РК
Но я получил исключение "преобразование не удалось при преобразовании значения varchar '8,8' в тип данных int". Спасибо

♥…ЯҠ…♥

Обновил свое решение, теперь попробуй

Praveen_P

Привет РК спасибо за ваше решение все еще получаю исключение
мой запрос: "select * from table_name where t_id IN ('9,8') " могу ли я сделать его таким
"select * from table_name where t_id IN (9,8)", что позволяет избежать исключения

♥…ЯҠ…♥

что будет сделано, в вашем вопросе вы дали как таковой, вот почему я добавил "в моем решении".Теперь все разрешится.

Tom Marvolo Riddle

5!

♥…ЯҠ…♥

Спасибо, Джас24.... ;-)

Praveen_P

Привет РК, большое спасибо , он работает отлично

Praveen_P

5!

♥…ЯҠ…♥

Добро пожаловать Правин ;-)

Рейтинг:
0

JoCodes

Храните проверенные значения в строковой переменной . Метод use TrimEnd ().

var selectedVal = str.TrimEnd(',');


Затем используйте его в условии where sql.