将 ComboBox 中的项目添加到 Datagrid
Adding items from ComboBox to Datagrid
当我单击组合框中的项目时,我需要将 ComboBox
中的项目插入 Datagrid
(SelectionChanged 事件)。
我使用以下方法将数据从 WCF 应用程序加载到组合框中:
private async Task LoadItems(TruckServiceClient TSC, QuoteOptionType type, ComboBox combobox)
{
List<DisplayItems> displayItems = new List<DisplayItems>();
foreach (var item in await TSC.GetQuoteOptionListAsync(type))
displayItems.Add(new DisplayItems { Id = item.Key, Name = item.Value });
combobox.ItemsSource = (displayItems.ToArray());
}
然后我对 WindowLoaded 事件中的哪些数据进行排序:
private async void QuoteWindow_Loaded(object sender, RoutedEventArgs e)
{
using (TruckServiceClient TSC = new TruckServiceClient())
{
await LoadItems(TSC, QuoteOptionType.BodyType, cmbBodyType);
await LoadItems(TSC, QuoteOptionType.Chassis, cmbChassisCab);
await LoadItems(TSC, QuoteOptionType.PaintColor, cmbPaint);
await LoadItems(TSC, QuoteOptionType.DropSide, cmbDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Floor, cmbFloor);
await LoadItems(TSC, QuoteOptionType.RearDropSide, cmbRearDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Extras, cmbAddExtras);
}
}
我非常想知道的是,我将如何显示我刚刚单击(在组合框中)以添加到数据网格的项目?
我已经尝试了我在互联网上找到的以下编码,但我什至不知道从哪里开始将编码从下面的内容更改为我需要它如何使用我当前的加载方式项目进入组合框。
Extras ex = (Extras)cmbAddExtras.SelectedItem;
List<Extra> items = new List<Extra> { E };
items.Where(item => item != null).ToList().ForEach(i =>
{
dgAddExtras.Items.Add(i);
});
在 XAML 或您的 Loaded 方法上订阅 SelectiongChanged
事件。然后在事件处理程序中只需检索所选项目并将其添加到 DataGrid:
private async void QuoteWindow_Loaded(object sender, RoutedEventArgs e)
{
using (TruckServiceClient TSC = new TruckServiceClient())
{
await LoadItems(TSC, QuoteOptionType.BodyType, cmbBodyType);
await LoadItems(TSC, QuoteOptionType.Chassis, cmbChassisCab);
await LoadItems(TSC, QuoteOptionType.PaintColor, cmbPaint);
await LoadItems(TSC, QuoteOptionType.DropSide, cmbDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Floor, cmbFloor);
await LoadItems(TSC, QuoteOptionType.RearDropSide, cmbRearDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Extras, cmbAddExtras);
}
combAddExtras.SelectionChanged += cmbAddExtras_SelectionChanged;
}
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = cmbAddExtras.SelectedItem;
if (item != null)
dgAddExtras.Items.Add(item);
}
编辑 - 如果您想从组合中删除项目:
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = cmbAddExtras.SelectedItem;
if (item != null)
{
dgAddExtras.Items.Add(item);
cmbAddExtras.Remove(item);
}
}
如果您不想将它从 Combo 中删除,但想检查它是否已经在 DataGrid 中:
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = cmbAddExtras.SelectedItem;
if (item != null && !dgAddExtras.Items.Contains(item))
dgAddExtras.Items.Add(item);
}
当我单击组合框中的项目时,我需要将 ComboBox
中的项目插入 Datagrid
(SelectionChanged 事件)。
我使用以下方法将数据从 WCF 应用程序加载到组合框中:
private async Task LoadItems(TruckServiceClient TSC, QuoteOptionType type, ComboBox combobox)
{
List<DisplayItems> displayItems = new List<DisplayItems>();
foreach (var item in await TSC.GetQuoteOptionListAsync(type))
displayItems.Add(new DisplayItems { Id = item.Key, Name = item.Value });
combobox.ItemsSource = (displayItems.ToArray());
}
然后我对 WindowLoaded 事件中的哪些数据进行排序:
private async void QuoteWindow_Loaded(object sender, RoutedEventArgs e)
{
using (TruckServiceClient TSC = new TruckServiceClient())
{
await LoadItems(TSC, QuoteOptionType.BodyType, cmbBodyType);
await LoadItems(TSC, QuoteOptionType.Chassis, cmbChassisCab);
await LoadItems(TSC, QuoteOptionType.PaintColor, cmbPaint);
await LoadItems(TSC, QuoteOptionType.DropSide, cmbDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Floor, cmbFloor);
await LoadItems(TSC, QuoteOptionType.RearDropSide, cmbRearDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Extras, cmbAddExtras);
}
}
我非常想知道的是,我将如何显示我刚刚单击(在组合框中)以添加到数据网格的项目?
我已经尝试了我在互联网上找到的以下编码,但我什至不知道从哪里开始将编码从下面的内容更改为我需要它如何使用我当前的加载方式项目进入组合框。
Extras ex = (Extras)cmbAddExtras.SelectedItem;
List<Extra> items = new List<Extra> { E };
items.Where(item => item != null).ToList().ForEach(i =>
{
dgAddExtras.Items.Add(i);
});
在 XAML 或您的 Loaded 方法上订阅 SelectiongChanged
事件。然后在事件处理程序中只需检索所选项目并将其添加到 DataGrid:
private async void QuoteWindow_Loaded(object sender, RoutedEventArgs e)
{
using (TruckServiceClient TSC = new TruckServiceClient())
{
await LoadItems(TSC, QuoteOptionType.BodyType, cmbBodyType);
await LoadItems(TSC, QuoteOptionType.Chassis, cmbChassisCab);
await LoadItems(TSC, QuoteOptionType.PaintColor, cmbPaint);
await LoadItems(TSC, QuoteOptionType.DropSide, cmbDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Floor, cmbFloor);
await LoadItems(TSC, QuoteOptionType.RearDropSide, cmbRearDropsideHeight);
await LoadItems(TSC, QuoteOptionType.Extras, cmbAddExtras);
}
combAddExtras.SelectionChanged += cmbAddExtras_SelectionChanged;
}
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = cmbAddExtras.SelectedItem;
if (item != null)
dgAddExtras.Items.Add(item);
}
编辑 - 如果您想从组合中删除项目:
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = cmbAddExtras.SelectedItem;
if (item != null)
{
dgAddExtras.Items.Add(item);
cmbAddExtras.Remove(item);
}
}
如果您不想将它从 Combo 中删除,但想检查它是否已经在 DataGrid 中:
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = cmbAddExtras.SelectedItem;
if (item != null && !dgAddExtras.Items.Contains(item))
dgAddExtras.Items.Add(item);
}