Member 13289720 Ответов: 1

Главная визуальная студия 2010 добавить цена выбранных товаров от checklistbox в C# для Windows РЖ РЖ Радж Радж 0117 добавить цена выбранных товаров от checklistbox в C# ОС Windows


Пожалуйста, помогите мне!

Я разрабатываю приложение VS 2010 C# windows form таким образом, что у меня есть checkedlistbox с именем темы, когда я выбираю курс из combobox, а затем checkboxlist показывает все темы, связанные с именем курса. также у меня есть простой флажок (выбрать все темы), я хочу проверить все темы или проверить конкретную тему . Теперь, когда я проверил тему, плата будет добавлена и показана в текстовом поле . плата вносится в базу данных предметной таблицы

Например:
Название Темы= Плата
Checkedlistbox пункт 1 английский= 1000
Checkedlistbox пункт 2 хинди = 500
Checkedlistbox пункт 3 Маратхи = 800
Checkedlistbox пункт 4 Science= 2000
Списке checkedlistbox пункт .......Н

На выбранном событии субъекта, если, например, я проверил пункты 1,2 и 4, я хочу получить сумму этих значений (то есть 3500)
отображается в текстовом поле 1.
Большое спасибо.

Что я уже пробовал:

private void chkselectsubject_CheckedChanged(object sender, EventArgs e)
        {            
            if (chkselectsubject.Checked)
            {               

                for (int i = 0; i < chklbselectsubject.Items.Count; i++)
                {
                    chklbselectsubject.SetItemChecked(i, true);
                   
                }              
            }
            else
            {
                for (int i = 0; i < chklbselectsubject.Items.Count; i++)
                {
                    chklbselectsubject.SetItemChecked(i, false);
                
                }
            }

Prifti Constantine

Содержит ли каждый элемент контрольного списка значение типа integer или decimal внутри него?
Или он содержит значение:" English: 1000 " в качестве строкового типа?

Member 13289720

нет, сэр, просто отобразите имя субъекта в cheklistbox, и плата за субъект будет внесена в базу данных таблицы subject_master. Итак, как я могу сделать добавление каждой предметной платы, которую я выбираю из контрольного списка

Prifti Constantine

Сохранили ли Вы значения, которые у вас есть в базе данных, внутри набора данных или datatable, чтобы использовать их или даже запрашивать?

1 Ответов

Рейтинг:
7

Prifti Constantine

Вы могли бы повторить, хотя список, который сделан для хранения внутри

List<string> subjects = new List<string>();
            foreach (var item in chekBox.Items) {
                subjects.Add(item.ToString());
            }

           
   string sqlcommand = "Select * from tblSubjectRates where subjectName=@SubjectName";
            List<int> SubjectRates = new List<int>();
            using (SqlConnection con = new SqlConnection(connectionString)) {
                con.Open();
                using (SqlCommand cmd = new SqlCommand(sqlcommand, con)) {
                    foreach (var item in subjects) {
                        cmd.Parameters.AddWithValue("@SubjectName", item.ToString());
                        var x = cmd.ExecuteScalar();
                        SubjectRates.Add(Convert.ToInt32(x));
                    }                 
                    
                }
                int TotalSum = SubjectRates.Sum();
            }


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


Member 13289720

спасибо сэр,
но я действительно не понимал, как добавить предметную плату
**Просто я отображаю имя субъекта в checklistbox, а плата за субъект вносится в базу данных таблицы tblsubject. Итак, как я могу сделать добавление каждой темы, которую я выбираю из контрольного списка, вместо следующего кода
частная chkselectsubject_CheckedChanged недействительным(объект отправителя, EventArgs в электронной)
{
если (chkselectsubject.Проверен)
{
for (int i = 0; i < chklbselectsubject.Предметы.Граф; i++)
{
chklbselectsubject.SetItemChecked(i, true);
checkprice();
}
}
еще
{
for (int i = 0; i < chklbselectsubject.Предметы.Граф; i++)
{
chklbselectsubject.SetItemChecked(i, false);
checkprice();
}
}
}

checkprice частный недействительными ()
{

SqlConnection con = новый SqlConnection(cs. DBcon);
против.Открыть();
string strsql = " Select Sum (fee) from Subject_Master where Sub_Name='"+chklbselectsubject.Свойство selecteditems+"'";
SqlCommand cmd= new SqlCommand(strsql, con);

сумма объектов = cmd.Executescalar так();
txtTotalfee.Текст = сумма.Метод toString();
против.Закрывать();


}

но вдобавок не сделали .......Помогите плз

Prifti Constantine

Вы отладили, чтобы увидеть, какое значение chklbselectsubject.SelectedItems возвращается? На мой взгляд, из-за того, что вы впервые видите свой код, ошибка может возникнуть при выборе "chklbselectsubject". Кроме того, переменная sum не обязательно должна иметь тип object, так как sum, вероятно, будет возвращать целочисленный тип значения или в основном double, так как мы говорим о возврате типа значения из базы данных.

Member 13289720

когда я использую int sum=cmd. executeScalar()
я получил ошибку не могу неявно преобразовать тип 'object' в 'int' существует явное преобразование.а также субъект, не выбранный из условия where
как я могу это сделать

Prifti Constantine

Вы можете изменить скалярную часть execute с помощью ExecuteReader();
использование (sqlDataReader reader = cmd.Метода executereader())
{
В то время как (читатель. читать())
{
int x = преобразовать.toInt32 (reader ["price"]. toString());
}
}

или приведите executeScalar() с помощью (int) :
Sum = (int)cmd. executeScalar();

Member 13289720

да ее работа, но.....когда я не использую условие where в запросе, то все сборы вычисляются из таблицы tblsubject, я хочу только выбранную тему
как я могу использовать query because [where Sub_Name='"+chklbselectsubject.SelectedItems+"'";] он не работает

Prifti Constantine

Это потому, что chklbselectsubject.SelectedItems, вероятно, возвращает много значений в зависимости от того, сколько значений выбрал пользователь. В этой ситуации, если пользователь выбирает 2 значения, то 2 из них не могут быть переданы в качестве параметра в запросе. Что вам нужно сделать, так это взять каждое значение, одно за другим, и соответственно изменить параметры.
Я привожу вам пример:
перечислитель по каждому элементу в списке
{
[где Sub_Name='"+item.Метод toString+"'"]
}
Я надеюсь, что это достаточно ясно.

Member 13289720

спасибо, сэр, все в порядке

Prifti Constantine

Хорошего вам дня, мой друг! Продолжайте кодировать!