Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
Подскажите, как можно сделать так, чтобы вместо 0,1 и null в combobox попадали по условию автор или потребитель?

Т.е. из столбца базы данных оракле, попадают в данный столбец в датагрид инфа см. рисунок
Причем в комбоксе так же должно быть два варианта т.е. возможно менять его значения, например, с автора на потребителя и наоборот.
private void button5_Click(object sender, EventArgs e)
        {
            string t1 = "Автор";
            string t2 = "Потребитель";
         
            
            // Вкл\выкл чекбоксов по условию
            for (int i = 0; i < this.dataGridView2.RowCount; i++)
            {
                string s = this.dataGridView2[3, i].Value.ToString();
                if (s == "") s = "0";
                if (int.Parse(s) < 1)
                {
                    

                   // MessageBox.Show(t1.ToString());
                this.dataGridView2[3, i].Value = t2;
                }
                else
                {
                    
                   // MessageBox.Show(t2.ToString());
                   this.dataGridView2[3, i].Value = t1;
                }
            }
        }


К сообщению приложен файл. Размер - 19Kb
14 июн 18, 07:43    [21489925]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
конечный результат ... что входящих данных из базы, были заменены comobox, в виде раскрывающего списка, первое значени которого подставляется в зависимости от входящих данных из базы
14 июн 18, 07:46    [21489927]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
SAS2014,

Вам бы книжку о привязке данных в WinForms почитать не мешало.

У DataGridViewComboBoxColumn есть такие свойства как:
- DataSource, через которое можно задать источник данных, что будут в виде выпадающего списка отображаться в комбобоксе;
- DisplayMember, что определяет значения какого поля из данных будут отображаться в виде текста;
- ValueMember , которое определяет, что использовать в качестве выбранного значения.

По ссылкам есть примеры.
14 июн 18, 07:53    [21489935]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
Ну и на тему привязки:

https://docs.microsoft.com/ru-ru/dotnet/framework/winforms/windows-forms-data-binding
https://www.ozon.ru/context/detail/id/4351803/
14 июн 18, 07:55    [21489936]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
спс за инфу
14 июн 18, 09:28    [21490055]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
Данный код добавляет в datagridview2 столбец «TEST» с набором данных, который формируется циклом по условию в зависимости от значений в столбце «Автор\Потребитель».
Возможно ли сменить стиль столбца «Автор\Потребитель» на стиль столбца «TEST» со всеми вытекающимся т.е. срабатывание условия, набором данных?
Если да, то что нужно добавить\изменить в коде?
Для наглядности добавил скрин.
private void button6_Click(object sender, EventArgs e) //TEST
        {
            string t1 = "Автор";
            string t2 = "Потребитель";

            DataGridViewComboBoxColumn cb = new DataGridViewComboBoxColumn();
            cb.HeaderText = "TEST";
            cb.Items.AddRange(new string[] { t2 , t1});
            dataGridView2.Columns.Add(cb);

            for (int i = 0; i < this.dataGridView2.RowCount; i++)
            {
                string s = this.dataGridView2[3, i].Value.ToString(); // столбец Автор\Потребитель
                if (s == "") s = "0";
                if (int.Parse(s) < 1)
                {
                    this.dataGridView2[4, i].Value = t2;
                }

                else
                {
                    this.dataGridView2[4, i].Value = t1;
                }
            }
        }


К сообщению приложен файл. Размер - 3Kb
15 июн 18, 09:04    [21492705]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
SAS2014,

а если простым языком попробовать объяснить?
15 июн 18, 09:07    [21492709]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
skyANA
SAS2014,

а если простым языком попробовать объяснить?


надо чтобы вывод колонки test попадал в первую колонку, ты инфу скидывал, анализировал и что понял воплотил в то что на скрине

т.е
сейчас
1 колонка имеет тип textbox
и данные там тип integer
1
0
null


Колонка ТЕСТ тип combobox
тип данных string
набор данных (автор, потребитель)


Надо
1 колонка тип combobox
тип данных string
набор данных (автор, потребитель) (заполнять набор данных по условию значений из базы)
15 июн 18, 09:37    [21492799]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3083
SAS2014
skyANA
SAS2014,

а если простым языком попробовать объяснить?


надо чтобы вывод колонки test попадал в первую колонку, ты инфу скидывал, анализировал и что понял воплотил в то что на скрине

т.е
сейчас
1 колонка имеет тип textbox
и данные там тип integer
1
0
null


Колонка ТЕСТ тип combobox
тип данных string
набор данных (автор, потребитель)


Надо
1 колонка тип combobox
тип данных string
набор данных (автор, потребитель) (заполнять набор данных по условию значений из базы)


"ты инфу скидывал, анализировал и что понял воплотил в то что на скрине"

вот, понятный язык
15 июн 18, 10:38    [21492976]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
Ролг Хупин
SAS2014
пропущено...


надо чтобы вывод колонки test попадал в первую колонку, ты инфу скидывал, анализировал и что понял воплотил в то что на скрине

т.е
сейчас
1 колонка имеет тип textbox
и данные там тип integer
1
0
null


Колонка ТЕСТ тип combobox
тип данных string
набор данных (автор, потребитель)


Надо
1 колонка тип combobox
тип данных string
набор данных (автор, потребитель) (заполнять набор данных по условию значений из базы)


"ты инфу скидывал, анализировал и что понял воплотил в то что на скрине"

вот, понятный язык


тот кто не понимает в C# ничего то он ищет в сообщение не вопросы, а инфу которую можно прокомментировать не адекватными словами
18 июн 18, 01:18    [21498424]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
SAS2014,

человек намекает на то, что понятнее не стало.

Зачем Вам какая-то колонка TEST? Вы можете просто рассказать, кто такие Автор и Потребитель, зачем их выбирать, кому и откуда?
И что потом с выбранным вариантом должно произойти?

Примеры по ссылкам смотрели? Что там не понятно?
18 июн 18, 09:47    [21498766]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
skyANA
SAS2014,

человек намекает на то, что понятнее не стало.

Зачем Вам какая-то колонка TEST? Вы можете просто рассказать, кто такие Автор и Потребитель, зачем их выбирать, кому и откуда?
И что потом с выбранным вариантом должно произойти?

Примеры по ссылкам смотрели? Что там не понятно?


суть в том что потребитель и автор это смысл значений которые хранятся в столбце базы данных
а для удобства понимания информации из базы ... замутил такую штуку где будет написано кто автор кто потребитель....
например
ФИО автор\потребитель
иванов автор (комбобокс)
петров потребитель (комбобокс)
18 июн 18, 09:53    [21498783]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
чтобы не было 1,0 и прочее в датагриде, а замена была на автора и потребителя
18 июн 18, 09:54    [21498785]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
SAS2014
чтобы не было 1,0 и прочее в датагриде, а замена была на автора и потребителя

Для этого надо всего-лишь правильно задать свойства DataMember и ValueMember.
18 июн 18, 10:24    [21498877]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
Как-то так:
var subjectTypes = new Disctionary<Int32, String> { { 0, "Автор" }, { 1, "Потребитель" } };

comboboxColumn.DisplayMember = "Value";
comboboxColumn.ValueMember = "Key";

comboboxColumn.DataSource = subjectTypes;
18 июн 18, 10:37    [21498938]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
Или через перечисление (enum):
public enum SubjectType
{
    Author = 0,
    Consumer = 1
}

var subjectTypes = new Disctionary<SubjectType, String>
{
    { SubjectType.Author, "Автор" },
    { SubjectType.Consumer, "Потребитель" }
};

comboboxColumn.DisplayMember = "Value";
comboboxColumn.ValueMember = "Key";

comboboxColumn.DataSource = subjectTypes;
18 июн 18, 10:40    [21498945]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26761
Ну или завести отдельный тип
public class SubjectType
{
    public int Id { get; set; },
    public string Name { get; set; }
}
и через список (List).

Ну или через DataTable, как в примере, давно могли бы сделать.
18 июн 18, 10:42    [21498955]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
Пишу прогу, которая ищет файлы в указанных каталогах причем более чем в одном
кароче вот код
// Начать поиск ...
        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            label10.Visible = true;
            button1.Enabled = false;
            t_file.Enabled = false;
            label10.Text = "В процессе ...";
            label10.ForeColor = Color.OrangeRed;
            label5.Enabled = false; label6.Enabled = false; label7.Enabled = false; label8.Enabled = false;


            backgroundWorker1.RunWorkerAsync(a); //запуск backgroundWorker1
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) // визуальное добавление найденых адресов файлов в листбокс
        {
            foreach (string pth in listBox2.Items)
            {
            string a = pth.ToString();
            string fil = t_file.Text;

            string[] allFoundFiles = Directory.GetFiles(a, fil, SearchOption.AllDirectories);
            foreach (string file in allFoundFiles)
            {
                dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(file))); // добавление файлов в datagridview
                Thread.Sleep(100); // пауза
            }

            }

            Invoke(new Action(() =>
           {
               label10.Text = "Выполнено";
               label10.ForeColor = Color.Green;
               button1.Enabled = true;
               t_file.Enabled = true;
               label5.Enabled = true; label6.Enabled = true; label7.Enabled = true; label8.Enabled = true;
           }));
        }



Все бы ничего, но у меня не получается написать такую штуку, чтобы нажал на кнопку и процесс остановился
код кнопки, который не работает

// Стоп поиск ...
        private void button5_Click(object sender, EventArgs e)
        {
            backgroundWorker1.WorkerSupportsCancellation = true;
            backgroundWorker1.CancelAsync();
            backgroundWorker1.Dispose();
        }


Может кто то подскажет как решить проблему?
5 сен 18, 10:05    [21665144]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
И куда пропали эксперты си шарпа?
6 сен 18, 06:21    [21666485]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20695
Я тебе уже говорил. Никому не нужна старинная тема с невменяемым неинформативным заголовком. Я думаю, сюда просто не заглядывают. Я вот даже не вчитывался, даже не понял, что у тебя какой-то новый вопрос возник, а не пережевывание старого
6 сен 18, 06:32    [21666488]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2404
SAS2014
И куда пропали эксперты си шарпа?
Делом заняты.
6 сен 18, 11:00    [21666650]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6294
SAS2014,

Использовать, как пример в справке. Он работает.

Могу предположить, что WorkerSupportsCancellation надо выставлять перед запуском треда, а не так хитропопо =)

ЗЫ. За button1_Click убивал бы....
6 сен 18, 12:15    [21666752]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6294
Кстати, работать не должно. Из worker.DoWork() нельзя обращаться к главному окну с циклом обработки сообщений, т.е грубо ко всему GUI
6 сен 18, 12:23    [21666776]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6294
Siemargl
Кстати, работать не должно. Из worker.DoWork() нельзя обращаться к главному окну с циклом обработки сообщений, т.е грубо ко всему GUI
Через Invoke можно, но производительность.....
Короче, надо как в учебнике.
6 сен 18, 15:10    [21667074]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20695
Дима, перелогинься обратно )
6 сен 18, 15:58    [21667157]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
ок потоком, разберусь

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

нашел некий код который позволяет выполнять поиск файлов по условию дате изменения
var foundFiles = dirSearch.GetFiles().Where(file => file.LastWriteTime >= dateTimePicker1.Value && file.LastWriteTime <= dateTimePicker2.Value);


как его скрестить )) с моим кодом?

foreach (string pth in listBox2.Items)
            {
            string a = pth.ToString();
            string fil = t_file.Text;
            string create_date = textBox1.Text;
            //string s_date = textBox2.Text;
            //string p_date = textBox3.Text;
    
            string[] allFoundFiles = Directory.GetFiles(a, fil, SearchOption.AllDirectories);
            foreach (string file_ in allFoundFiles)
            {

                dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(file_))); // добавление файлов в datagridview
                Thread.Sleep(100); // пауза
            }

            }


PS
На форме есть 4 элемента
текстобокс1
текстобокс2

в эти текстбоксы попадают значение из dateTimePicker вот эти значение надо учитывать при поиске файловв каталогах
7 сен 18, 09:01    [21667675]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6294
SAS2014,

В DoWork сгенерил список
В RunWorkerCompleted из списка загнал в Грид
7 сен 18, 09:21    [21667691]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь экспертов в C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 2800
Siemargl
SAS2014,

В DoWork сгенерил список
В RunWorkerCompleted из списка загнал в Грид

это ответ на какой вопрос?
7 сен 18, 09:31    [21667705]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / WinForms, .Net Framework Ответить