powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь DataGridView и Combobox
25 сообщений из 28, страница 1 из 2
Связь DataGridView и Combobox
    #36527577
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал датасет, создал в нем отношения, и возникла проблема в выборе их в DataMember, ведь я могу выбрать лишь между 2мя таблицами и сортировать только так. А есть ли путь, чтобы сделать несколько Комбобоксом и сортировать ими? Чтобы можно было задавать параметры фильтрации в 2-3 комбобоксам или же только в одном.
Заранее благодарю
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36527887
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если честно ничего не понял.

Может как-то по-другому объясните ?
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36527952
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотрите. Я делаю 2 датаадаптера, потом создаю общий датасет, затем устанавливаю связь между таблицами в датасете. В итоге я могу сделать Комбобокс, выбираю значения в котором у меня будут выбираться данные которые соответствуют значениям из комбобокса. все ок. Но я хочу сделать несколько комбобоксов. И проблема в том как мне связать их с датагридвью.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36528664
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
assassnkaСмотрите. Я делаю 2 датаадаптера, потом создаю общий датасет, затем устанавливаю связь между таблицами в датасете. В итоге я могу сделать Комбобокс, выбираю значения в котором у меня будут выбираться данные которые соответствуют значениям из комбобокса. все ок.
1)Но я хочу сделать несколько комбобоксов.
2)И проблема в том как мне связать их с датагридвью.

1) использовать
Код: plaintext
DataView
, тогда датасорс один, представлений много
2) что с гридом связывать, комбобокс или датасорс ?
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36529907
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Комбобоксы думаю, чтобы я мог выбрать данные из 3-4ых комбо боксах и данные показывались только те, что подходят под эти параметры.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36529972
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного не так наверное написал. Я могу задать свзяь датагридвью только между двумя таблицами. Например Заказ-Клиент. И в комбобоксе я буду выбирать клиента. А мне отображаться заказы этого клиента, а я хочу сделать, если конечно такое возможно, связь между 3мя и более таблицами. Чтобы у меня были связи как Заказ-Клиент, Заказ-Оператор, Заказ-Техника. и прочее.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36530133
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну так делайте комбобоксы под вашие фильтры: Коиент, Опреатор, Техника
в гриде выводите полный заказ со всеми полями-критериями.
на изменения выбора какого-либо из комбобоксов меняйте фильтры у грида (если датасорсом будет DataView, то это свойство RowFilter)
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36530433
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таким образом я смогу выбирать к комбобоксах все варианты или нет?
К примеру клиент с ид 3 не имеет заказов, мне он покажется или нет?
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36531018
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
    
private void Form1_Load(object sender, EventArgs e)
     { isLoading = true;
            comboBox1.DataSource = new DataView(salesPerson);
            comboBox1.DisplayMember = "FullName";
            comboBox1.ValueMember = "ID";

            comboBox2.DataSource = new DataView(product);
            comboBox2.DisplayMember = "Name";
            comboBox2.ValueMember = "ID";
            isLoading = false;

            ApplyFilter();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ApplyFilter();
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            ApplyFilter();
        }

        private void ApplyFilter()
        {
            if (isLoading)
                return;

            string filter = "SalesPersonID = " + comboBox1.SelectedValue.ToString() 
                + "AND ProductID = " + comboBox2.SelectedValue.ToString();

            ((DataView)dataGridView1.DataSource).RowFilter = filter;
        }
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36531041
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если еще раз и на VB? Очень прошу) в С не очень разбираюсь :(
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36531159
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36533718
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36533726
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а с чем датагридвью связывается то?
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36533894
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
assassnkaа с чем датагридвью связывается то?
а с чем вы его хотите с тем и связывыайте (в моем примере это DataView), главное чтоб грид содержал фильтрующие поля.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36533911
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернее я так понял, что мне нужно закрепить за датагридвью Датавью1(к примеру), за комбобоксом датавью2.
И пропиписать в RowFilter(датавью1), что оно равняется выбраному значению в комбобоксе2. Верно?
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36534158
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
assassnkaВернее я так понял, что мне нужно закрепить за датагридвью Датавью1(к примеру), за комбобоксом датавью2.
И пропиписать в RowFilter(датавью1), что оно равняется выбраному значению в комбобоксе2. Верно?

все верно, вы попробуйте сделать, если не получится пишите что и как.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36535958
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот попробывал с 1им комбобоксом.
Вот какую ошибку пишет - В экземпляре объекта не задана ссылка на объект.
Вот код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Class sort

    Private Sub sort_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ApplyFilter()
    End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ApplyFilter()
    End Sub
Private Sub ApplyFilter()
        Dim filter As String = "ID_Kl = " + ComboBox1.SelectedValue.ToString()
    End Sub
End Class
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36535960
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил метод Fill датасета, в датаадаптеры, чтобы загружался датагридвью.
Попробывал заменить Combobox1.Value.ToString() на Combobox1.Text или же Combobox1.ValueMember, работает, но не сортирует
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36535962
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Датасорс я указываю комбоксам через дизайнер
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36536151
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) у меня не зря флаг isLoading стоит, на событии Load у вас еще грид пустой, поэтому применять фильтр не надо.
2) фильтр
Код: plaintext
1.
Dim filter As String = "ID_Kl = " + ComboBox1.SelectedValue.ToString()
этим кодом вы присваиваете только строке, а нужно ставить RowFilter в DataView
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36556900
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получился вот такой код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Class sort

    Private Sub sort_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ApplyFilter()
        SqlDataAdapter1.Fill(Sort_ds1)
        SqlDataAdapter2.Fill(Sort_ds1)
        SqlDataAdapter3.Fill(Sort_ds1)
        SqlDataAdapter4.Fill(Sort_ds1)
        SqlDataAdapter5.Fill(Sort_ds1)
        SqlDataAdapter6.Fill(Sort_ds1)
        SqlDataAdapter7.Fill(Sort_ds1)
        SqlDataAdapter8.Fill(Sort_ds1)
    End Sub
 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ApplyFilter()
    End Sub
    Private Sub ApplyFilter()
        Dim filter As String = "ID_Kl =" + ComboBox1.SelectedValue.ToString()
        DirectCast(DataGridView1.DataSource, DataView).RowFilter = filter
    End Sub
End Class
Комбобокс задан через дизайнер
При запуске выдает ошибку - В экземпляре объекта не задана ссылка на объект.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36556902
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
isLoading для VB я не нашел. он не воспринимает это, считает, что это переменная или процедура, пишет, что must be declared.
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36557081
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
assassnkaisLoading для VB я не нашел. он не воспринимает это, считает, что это переменная или процедура, пишет, что must be declared.

это и есть локальная переменная, которую я объявил и сказал что при загрузке фильтр не включай, а как только загрузил, то отфильтруй, поэтому у вас и падает ошибка при запуске. =)

смотрите код, как структура выглядит

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
internal class MyForm: Form
{
private isLoading;

private void MyForm_Load(object sender, EventArgs e)
{
isLoading = true;
//Тут грузите ваши даные из таблиц в грид и комбобокс
isLoading = false;
}

//Событие на изменение комбобокса
private void MyCombobox_SelectedItemChanged(object sender, EventArgs e)
{
//При установке дата сорса в комбобоксе это событие возникает, и на него не надо реагировать 
//тк грид может быть еще не инециализирован
if(isLoading)
  return;

ApplyFilter();
}

// Применить фильтр к гриду
private ApplyFilter()
{
}
}
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36557145
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а то что я выбираю DataView1 таблицу которую просматриваю, так сказать общую, а в DataView2 выбираю таблицу для комбобокса которой буду сортировать, это верно?
...
Рейтинг: 0 / 0
Связь DataGridView и Combobox
    #36557410
assassnka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот попробывал сделать аналогию, я обновляю с кнопки, потому что в начале выбирается диапазон дат, вот код, кстати ваш код я не смог конвертировать в VB, мне выдало ошибку.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Public Class sort
    Private isloading()
    Private Sub sort_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'ApplyFilter()
        '  ComboBox1.DataSource = New DataView(Klient)
        ' ComboBox1.DisplayMember = "N_kl"
        'ComboBox1.ValueMember = "ID_kl"
        'SqlDataAdapter1.Fill(Sort_ds1)
        ' SqlDataAdapter2.Fill(Sort_ds1)
        ' SqlDataAdapter3.Fill(Sort_ds1)
        ' SqlDataAdapter4.Fill(Sort_ds1)
        ' SqlDataAdapter5.Fill(Sort_ds1)
        ' SqlDataAdapter6.Fill(Sort_ds1)
        ' SqlDataAdapter7.Fill(Sort_ds1)
        ' SqlDataAdapter8.Fill(Sort_ds1)
    End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If isloading Then
            Return
        End If
        ApplyFilter()
    End Sub
Private Sub ApplyFilter()
         Dim filter As String = "ID_kl =" + ComboBox1.SelectedValue.ToString()
        DirectCast(DataGridView1.DataSource, DataView).RowFilter = filter
    End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        isloading = True
        SqlDataAdapter1.SelectCommand.Parameters("@Param1").Value = DateTimePicker1.Text()
        SqlDataAdapter1.SelectCommand.Parameters("@Param2").Value = DateTimePicker2.Text()
        Sort_ds1.Clear()
        SqlDataAdapter1.Fill(Sort_ds1)
        SqlDataAdapter2.Fill(Sort_ds1)
        SqlDataAdapter3.Fill(Sort_ds1)
        SqlDataAdapter4.Fill(Sort_ds1)
        SqlDataAdapter5.Fill(Sort_ds1)
        SqlDataAdapter6.Fill(Sort_ds1)
        SqlDataAdapter7.Fill(Sort_ds1)
        SqlDataAdapter8.Fill(Sort_ds1)
        isloading = False
    End Sub
End Class
вот ошибка - Value of type 'Boolean' cannot be converted to '1-dimensional array of Object'.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь DataGridView и Combobox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]