Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: VB.NET master_detail двух combobox_ов Добавлено: 10.02.03 18:03  

Автор вопроса:  NEZNAYKA | ICQ: 158275909 

Всем Здравствуйте!

Пишу на VB.NET (WinForms).

Хочу сделать два комбобокса

1 показывает master table

2 показывает detail table

Хочу чтобы во 2 высвечивались Child строки в соответствии с выбранной строкой в 1

Допустим связь страна->город

в 1 выбрана Украина

во 2 только города Украины

Помогите пожалуйста а то у меня уже крыша медленно начинает съезжать.

За ранее благодарен.

ICQ 158275909

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 11.02.03 06:44
Где хранятся данные?

Ответить

Номер ответа: 2
Автор ответа:
 NEZNAYKA



ICQ: 158275909 

Вопросов: 5
Ответов: 17
 Профиль | | #2 Добавлено: 11.02.03 10:06

в dataset, Relation я прописую.

Просто не хочется делать через dataview.rowfilter, хочется использовать relation(как в datagrid) а не знаю как привязаться.

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 11.02.03 12:50

Насколько я понимаю, 2 таблицы - в одной страны типа
ID, Country
В другой города.
ID, CountryID, City
И надо в Combo1 всё из первой таблицы, а в Combo2 города,
соответствующие стране выбранной в Combo1. Если я правльно понял, то
заполняем Combo1 (ds - Dataset с таблицами):

Combo1.Items.Clear
For i=0 to ds.Tables("Countries").Rows.Count-1
    Combo1.Items.Add (ds.Tables("Countries").Rows(i).Item("Country"))
Next

Дальше при клике по Combo1 заполняем Combo2.

Combo2.Items.Clear
For i=0 to ds.Tables("Cities").Rows.Count-1
    If ds.Tables("Countries").Rows(i).Item("CountryID")=Combo1.SelectedIndex Then
       Combo1.Items.Add (ds.Tables("Cities").Rows(i).Item("City"))
    End If
Next

Ответить

Номер ответа: 4
Автор ответа:
 NEZNAYKA



ICQ: 158275909 

Вопросов: 5
Ответов: 17
 Профиль | | #4 Добавлено: 11.02.03 14:02

Как это уже делаю я

Private Sub frm_adress_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

ds_adress = load_dataset()'функция которая возвращает датасет с двумя таблицами "v_country" и "v_dataset" и relation "country_city"

cb_country.DataSource = ds_adress.Tables("v_country")

cb_country.DisplayMember = "name"

cb_country.ValueMember = "id"

End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_country.SelectedIndexChanged

Dim dv As DataView

dv = New DataView(ds_adress.Tables("v_street"), "country_id = '" + cb_country.SelectedValue.ToString + "'", "", Data.DataViewRowState.OriginalRows)

cb_city.DataSource = dv

cb_city.DisplayMember = "name"

cb_city.ValueMember = "id"

End Sub

Но я не хочу привязываться к конкретным полям таблицы

dv = New DataView(ds_adress.Tables("v_street"), "country_id = '" + cb_country.SelectedValue.ToString + "'", "", Data.DataViewRowState.OriginalRows)

или пробегать это все в цикле (привязываясь к конкретным полям таблицы)Ваш пример

а хочу использовать relation как это делается при master - detail в датагриде

DataGrid1.DataSource = ds_adress

DataGrid2.DataMember = "v_country"

DataGrid2.DataSource = ds_adress

DataGrid2.DataMember = "v_country.country_region"

Может я много-го хочу, ну хочется сделать всегда как можно лучше :)

За Ваш ответ спасибо! :)

Ответить

Номер ответа: 5
Автор ответа:
 NEZNAYKA



ICQ: 158275909 

Вопросов: 5
Ответов: 17
 Профиль | | #5 Добавлено: 11.02.03 14:06

Маленькая опечатка

dv = New DataView(ds_adress.Tables("v_street"), "country_id = '" + cb_country.SelectedValue.ToString + "'", "", Data.DataViewRowState.OriginalRows)

вместо v_street - V_city

dv = New DataView(ds_adress.Tables("v_city"), "country_id = '" + cb_country.SelectedValue.ToString + "'", "", Data.DataViewRowState.OriginalRows)

DataGrid2.DataMember = "v_country.country_region"

вместо v_country.country_region - v_country.country_city

DataGrid2.DataMember = "v_country.country_city"

Ответить

Номер ответа: 6
Автор ответа:
 NEZNAYKA



ICQ: 158275909 

Вопросов: 5
Ответов: 17
 Профиль | | #6 Добавлено: 12.02.03 13:58

получается никто ответа незнает или не хочет говорить ?

Вообщем все такие же незнайки как и я :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам