カスケードコンボボックスを作成するためのコードです。セグメント名(combox1)に選択された値に基づいてFamily Combobox(ComboBox2)に値を設定しようとしています。最初のComboに静的リソースを設定することはできますが、 最初のコンボボックスの選択変更イベントで、 "FillComboBoxFamilyData(SegmentCode)"というメソッドを呼び出しています。カスケードコンボボックスを動作させることができません
XAMLコード:
<Grid Height="142" HorizontalAlignment="Left" Margin="49,113,0,0" Name="grid3" VerticalAlignment="Top" Width="904">
<ComboBox Height="23" HorizontalAlignment="Left" Margin="35,26,0,0" Name="comboBox1" VerticalAlignment="Top" Width="205" ItemsSource="{Binding Source={StaticResource tblSegmentViewSource}}" DisplayMemberPath="Segment Name" SelectedValuePath="Segment Code" SelectionChanged="comboBox1_SelectionChanged"/>
<ComboBox Height="23" HorizontalAlignment="Right" Margin="0,26,395,0" Name="comboBox2" VerticalAlignment="Top" Width="205" />
<Window.Resources>
<CollectionViewSource x:Key="tblSegmentViewSource" Source="{Binding Path=TblSegment, Source={StaticResource brickDataset}}" />
<CollectionViewSource x:Key="tblFamilyViewSource" Source="{Binding Path=TblFamily, Source={StaticResource brickDataset}}" />
* BrickDataSetは、私はからテーブルを引いています主なデータセットです。 *
のC#:
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MessageBox.Show(comboBox1.SelectedValue.ToString());
SegmentCode = Convert.ToInt32(comboBox1.SelectedValue.ToString());
FillComboBoxFamilyData(SegmentCode);
}
public void FillComboBoxFamilyData(int Segment_Code)
{
string connString =
"Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Documents and Settings\\dchaman\\My Documents\\PDRT.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True ";
SqlConnection con = new SqlConnection(connString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText =
"SELECT TblFamily.[Family Name],TblFamily.[Family Code] FROM TblFamily WHERE (TblFamily.[Segment Code] = @SegmentCode)";
cmd.Parameters.AddWithValue("@SegmentCode", Segment_Code);
DataSet objDs = new DataSet();
SqlDataAdapter dAdapter = new SqlDataAdapter();
dAdapter.SelectCommand = cmd;
dAdapter.Fill(objDs);
con.Close();
if (objDs.Tables[0].Rows.Count > 0)
{
MessageBox.Show("Here I am");
comboBox2.DataContext = objDs.Tables;
comboBox2.Items.Insert(0, "--Select Family Name--");
comboBox2.DisplayMemberPath = "Family Name";
comboBox2.SelectedValue = "Family Code";
}
}
私は右の私を保存now.Pleaseテーブルで私の頭を叩いています!
メッセージボックスが表示されますが、コンボには情報がありません。私はあなたがコンボボックス2のDataContextを設定しているのを見るが、あなたはそのコンテキストに何もバインドしていない。 – Thomas