C#Save Combobox值并在sql中使用以显示分组数据

时间:2017-08-08 10:59:41

标签: wpf listview combobox designer

这是我在xaml文件中的ComboBox的代码:

<telerik:RadComboBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Center" telerik:TextSearch.TextPath="Name" Margin="0 0 10 0"
            IsEditable="True" ItemsSource="{Binding AvailableFunds}"
                             DisplayMemberPath="Perioada"
                        SelectedValuePath="Perioada" 
                                SelectedValue="{Binding Path=Perioada}" 
                             SelectedIndex="0" 
            SelectionBoxTemplate="{StaticResource ComboBoxSimpleTemplate}" SelectionChanged="RadComboBox_SelectionChanged"/>

组合框显示一些日期(年和月),客户可以选择一个日期。然后,我需要在列表视图中显示所选时间段的所有日期:

<ListView Grid.Row="4" Grid.Column="1" ItemsSource="{Binding SalesGroupedByPartners}" Margin="0,0,10,0" ScrollViewer.HorizontalScrollBarVisibility="Auto">
            <ListView.View>
                <GridView >
                    <GridViewColumn Header="Perioada" Width="100" DisplayMemberBinding="{Binding Path=Perioada}"/>
                    <GridViewColumn Header="Nume Client" Width="300" DisplayMemberBinding="{Binding Path=Client}"/>
                    <GridViewColumn Width="120" Header="Suma">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Width="120" TextAlignment="Right" Text="{Binding Path=Suma, StringFormat=N2}" Margin="-6,0" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
<。>在.cs文件中我有一个空的方法:

private void RadComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { }

我尝试在此方法中创建一个字符串并保存我的ComboBox的结果,但无法访问它,因为我的ComboBox没有名称()。

或者,我可以直接将选择发送到sql文件....:

声明@Period 设置@Period =客户端选择(这里我不知道从ComboBox调用)

并在ListView中显示:

从表中选择* 其中Period = @Period

BomboBox and ListView designer

2 个答案:

答案 0 :(得分:0)

  

我尝试在此方法中创建一个字符串并保存我的ComboBox的结果,但无法访问它,因为我的ComboBox没有名称()。

您可以通过在事件处理程序中转换RadComboBox参数来获取对sender的引用:

private void RadComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Telerik.Windows.Controls.RadComboBox comboBox = sender as Telerik.Windows.Controls.RadComboBox;
    object value = comboBox.SelectedValue;
    //...
}

但是,由于绑定到Perioada属性,您还可以从此属性中检索当前选定的值。

答案 1 :(得分:0)

解决了:D

在xaml.cs文件中

需要添加一些代码:

    cn.Open();

            SqlCommand cmd = new SqlCommand(Properties.Resources.SalesGroupedByPartners, cn);
            cmd.CommandType = CommandType.Text;
            cmd.CommandTimeout = 100;
            cmd.Parameters.AddWithValue("@Perioada", Perioada);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(salesGroupedByPartners);

            cn.Close();

var negativeRows = new List<SalesGroupedByPartners>();

        foreach (var v in viewModel.SalesGroupedByPartners)
        {
            if (v.Perioada == "@Perioada")
            {
                negativeRows.Add(v);
            }
        }