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

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

1) использовать
Код: plaintext
DataView
, тогда датасорс один, представлений много
2) что с гридом связывать, комбобокс или датасорс ?
...
Рейтинг: 0 / 0
19.03.2010, 06:33
    #36529907
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Комбобоксы думаю, чтобы я мог выбрать данные из 3-4ых комбо боксах и данные показывались только те, что подходят под эти параметры.
...
Рейтинг: 0 / 0
19.03.2010, 08:08
    #36529972
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Немного не так наверное написал. Я могу задать свзяь датагридвью только между двумя таблицами. Например Заказ-Клиент. И в комбобоксе я буду выбирать клиента. А мне отображаться заказы этого клиента, а я хочу сделать, если конечно такое возможно, связь между 3мя и более таблицами. Чтобы у меня были связи как Заказ-Клиент, Заказ-Оператор, Заказ-Техника. и прочее.
...
Рейтинг: 0 / 0
19.03.2010, 10:08
    #36530133
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
ну так делайте комбобоксы под вашие фильтры: Коиент, Опреатор, Техника
в гриде выводите полный заказ со всеми полями-критериями.
на изменения выбора какого-либо из комбобоксов меняйте фильтры у грида (если датасорсом будет DataView, то это свойство RowFilter)
...
Рейтинг: 0 / 0
19.03.2010, 12:10
    #36530433
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Таким образом я смогу выбирать к комбобоксах все варианты или нет?
К примеру клиент с ид 3 не имеет заказов, мне он покажется или нет?
...
Рейтинг: 0 / 0
19.03.2010, 14:29
    #36531018
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Код: 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
19.03.2010, 14:35
    #36531041
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
А если еще раз и на VB? Очень прошу) в С не очень разбираюсь :(
...
Рейтинг: 0 / 0
19.03.2010, 15:09
    #36531159
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
...
Рейтинг: 0 / 0
22.03.2010, 06:44
    #36533718
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
спасибо
...
Рейтинг: 0 / 0
22.03.2010, 07:21
    #36533726
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
а с чем датагридвью связывается то?
...
Рейтинг: 0 / 0
22.03.2010, 10:16
    #36533894
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
assassnkaа с чем датагридвью связывается то?
а с чем вы его хотите с тем и связывыайте (в моем примере это DataView), главное чтоб грид содержал фильтрующие поля.
...
Рейтинг: 0 / 0
22.03.2010, 10:22
    #36533911
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Вернее я так понял, что мне нужно закрепить за датагридвью Датавью1(к примеру), за комбобоксом датавью2.
И пропиписать в RowFilter(датавью1), что оно равняется выбраному значению в комбобоксе2. Верно?
...
Рейтинг: 0 / 0
22.03.2010, 12:02
    #36534158
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
assassnkaВернее я так понял, что мне нужно закрепить за датагридвью Датавью1(к примеру), за комбобоксом датавью2.
И пропиписать в RowFilter(датавью1), что оно равняется выбраному значению в комбобоксе2. Верно?

все верно, вы попробуйте сделать, если не получится пишите что и как.
...
Рейтинг: 0 / 0
23.03.2010, 06:50
    #36535958
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Вот попробывал с 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
23.03.2010, 06:54
    #36535960
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Добавил метод Fill датасета, в датаадаптеры, чтобы загружался датагридвью.
Попробывал заменить Combobox1.Value.ToString() на Combobox1.Text или же Combobox1.ValueMember, работает, но не сортирует
...
Рейтинг: 0 / 0
23.03.2010, 06:56
    #36535962
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Датасорс я указываю комбоксам через дизайнер
...
Рейтинг: 0 / 0
23.03.2010, 10:09
    #36536151
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
1) у меня не зря флаг isLoading стоит, на событии Load у вас еще грид пустой, поэтому применять фильтр не надо.
2) фильтр
Код: plaintext
1.
Dim filter As String = "ID_Kl = " + ComboBox1.SelectedValue.ToString()
этим кодом вы присваиваете только строке, а нужно ставить RowFilter в DataView
...
Рейтинг: 0 / 0
02.04.2010, 07:37
    #36556900
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Получился вот такой код.
Код: 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
02.04.2010, 07:40
    #36556902
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
isLoading для VB я не нашел. он не воспринимает это, считает, что это переменная или процедура, пишет, что must be declared.
...
Рейтинг: 0 / 0
02.04.2010, 10:19
    #36557081
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
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
02.04.2010, 10:47
    #36557145
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
а то что я выбираю DataView1 таблицу которую просматриваю, так сказать общую, а в DataView2 выбираю таблицу для комбобокса которой буду сортировать, это верно?
...
Рейтинг: 0 / 0
02.04.2010, 12:14
    #36557410
assassnka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь DataGridView и Combobox
Вот попробывал сделать аналогию, я обновляю с кнопки, потому что в начале выбирается диапазон дат, вот код, кстати ваш код я не смог конвертировать в 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
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь DataGridView и Combobox / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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