Как заполнить combobox в новом окне с помощью события двойного щелчка мыши datagrid
У меня есть DataGrid, который заполнен, но база данных SQL Server в моем главном окне. У меня есть событие, которое срабатывает, когда пользователь дважды щелкает по строке, чтобы открыть новое окно (Окно 1) и заполнить текстовые поля и комбо-боксы информацией из строки.
private void dtGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { // User double clicks on DataGrid Row // Open new Window // Populate selected textboxes with selected datarow DataGrid gd = (DataGrid)sender; DataRowView row_selected = gd.SelectedItem as DataRowView; var windowToOpen = new Window1(); if (gd != null) { // Textboxes windowToOpen.txt_RowRecrd.Text = row_selected["DSP_ID"].ToString(); windowToOpen.txt_acctnumber.Text = row_selected["ACCOUNT"].ToString(); windowToOpen.txt_analyst.Text = row_selected["TX_EMPLOYEE"].ToString(); windowToOpen.txt_custname.Text = row_selected["CUST_NAME"].ToString(); windowToOpen.txt_address.Text = row_selected["PREM_ADDR"].ToString(); windowToOpen.txt_Status.Text = row_selected["Status"].ToString(); windowToOpen.txt_opened.Text = row_selected["OPENED"].ToString(); windowToOpen.txt_deadline.Text = row_selected["DEADLINE"].ToString(); windowToOpen.txt_DaysOpen.Text = row_selected["DaysOpen"].ToString(); windowToOpen.txt_DateResolved.Text = row_selected["DATERSLVD"].ToString(); windowToOpen.txt_revcls.Text = row_selected["RateType"].ToString(); windowToOpen.txt_WFMissuedBy.Text = row_selected["NM_USER"].ToString(); windowToOpen.txt_firstreview.Text = row_selected["FR_DT_FIRSTREV"].ToString(); windowToOpen.txt_Latestupdate.Text = row_selected["FR_TS_LATESTUPD"].ToString(); windowToOpen.txt_reviewNotes.Text = row_selected["FR_CMMNT"].ToString(); windowToOpen.txt_ResolutionNotes.Text = row_selected["COMMENT"].ToString(); // ComboBoxes foreach (DataRowView row in dtGrid.SelectedItems) { windowToOpen.cmb_UtilityRptTyp.Items.Clear(); windowToOpen.cmb_UtilityRptTyp.SelectedIndex = windowToOpen.cmb_UtilityRptTyp.Items.Add(row["RPTTYPE"]); } windowToOpen.Show(); } else { return; } }
В окне 1 у меня есть внутренний код для моего ComboBox, который заполняет список элементов из той же базы данных SQL Server при загрузке окна.
public void txt_UtilityRptTyp_Loaded(object sender, RoutedEventArgs e) { { SqlConnection connection = new SqlConnection("Data Source=WINDOWS-B1AT5HC\\SQLEXPRESS;Initial Catalog=CustomerRelations;Integrated Security=True;"); try { connection.Open(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } try { SqlDataAdapter Status_data = new SqlDataAdapter("SELECT RPTID, ReportType FROM [hb_RptType]", connection); DataSet ds = new DataSet(); Status_data.Fill(ds, "t"); cmb_UtilityRptTyp.ItemsSource = ds.Tables["t"].DefaultView; cmb_UtilityRptTyp.DisplayMemberPath = "ReportType"; cmb_UtilityRptTyp.SelectedValuePath = "RPTID"; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
Однако с помощью кода, который я написал
windowToOpen.cmb_UtilityRptTyp.SelectedIndex = windowToOpen.cmb_UtilityRptTyp.Items.Add(row["RPTTYPE"]);Я смог показать только числовое значение из столбца DataGrid, но не смог правильно привязать его к comobox, чтобы показать текст списка элементов.
Что я уже пробовал:
Я устал использовать
windowToOpen.cmb_UtilityRptTyp.SelectedItem = row_selected["RPTTYPE"].ToString();
<pre> windowToOpen.cmb_UtilityRptTyp.SelectedValue = row_selected["RPTTYPE"].ToString();