हो रही डेटा में सूची में DataGrid ComboBox

0

सवाल

मैं कर रहा हूँ परेशानी हो रही है एक सूची से आइटम के लिए एक combobox स्तंभ में एक datagrid में WPF. यह मेरे लिए नया है, तो किसी भी मदद की बहुत सराहना की जाएगी. ऐसा लगता है कि वहाँ रहे हैं कई मायनों में यह करने के लिए लेकिन मैं नहीं किया गया है प्राप्त करने में सक्षम उनमें से किसी के लिए काम करते हैं.

"'

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Positionname}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>

                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="poscombo Loaded="comboposloaded"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            
            </DataGridTemplateColumn>

सूची में डेटा के साथ पीछे कोड

 List<Positions> PositionList = new List<Positions>();

अद्यतन: मैं समाप्त जोड़ने के एक लोड हो रहा है घटना को खींचने के लिए सूची के रूप में itemsource. अब सवाल यह है कि कैसे प्राप्त करने के लिए चयनित मूल्य से combobox में वापस पाठ ब्लॉक?

C# जोड़ा गया कॉम्बो पाने के लिए भरी हुई है.

    private void comboposloaded(object sender, RoutedEventArgs e)
    {
        ComboBox cmb = (ComboBox)sender;
        cmb.ItemsSource = PositionList;
        cmb.DisplayMemberPath = "info";
        cmb.SelectedValuePath = "psnme";

    }
c# combobox datagrid wpf
2021-11-19 03:06:28
2

सबसे अच्छा जवाब

0

अब सवाल यह है कि कैसे प्राप्त करने के लिए चयनित मूल्य से combobox में वापस पाठ ब्लॉक?

बाँध psnme संपत्ति के Positions वस्तु के लिए Positionname संपत्ति के डेटा ऑब्जेक्ट:

<ComboBox x:Name="poscombo" Loaded="comboposloaded"
          SelectedValue="{Binding Positionname, UpdateSourceTrigger=PropertyChanged}"/>
2021-11-19 15:00:41
0

डेटा बाइंडिंग के लिए DataGridComboBoxColumn लग रहा है एक छोटे से अधिक जटिल की तुलना में आप सोच सकते हैं.

  1. उपयोग ObservableCollection के बजाय सूची. यह स्वचालित रूप से अद्यतन सामग्री के DataGrid.
  2. आप कर सकते हैं डेटा लोड में एक कॉम्बो बॉक्स का उपयोग कर ObjectDataProvide. यह भी सुनिश्चित करना होगा कि डेटा स्रोत में स्वचालित रूप से अद्यतन किया जाता है । यहाँ काम कर रहे एक उदाहरण है ।
    public partial class MainWindow : Window
    {
        public EmployeeViewModel EmployeeVM;
        public MainWindow()
        {
            InitializeComponent();
            EmployeeVM = new EmployeeViewModel();
            MyDataGrid.ItemsSource = EmployeeVM.EmployeeList;
        }
    }

    public class Employee
    {
        public string Name { get; set; }
        public PositionEnum Position { get; set; }
    }

    public enum PositionEnum { Marketeer, Mechanic, Accountant };
    public class EmployeeViewModel 
    {
        public ObservableCollection<Employee> EmployeeList =
          new ObservableCollection<Employee>();
        public EmployeeViewModel()
        { 
            EmployeeList.Add(new Employee()
             { Name = "James Smith", Position = PositionEnum.Accountant });
            EmployeeList.Add(new Employee()
             { Name = "Robert Johnson", Position = PositionEnum.Marketeer });
            EmployeeList.Add(new Employee() 
             { Name = "David Williams", Position = PositionEnum.Mechanic });
        }
    }

XAML

<Window x:Class="WpfApp6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:core="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApp6"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" >
    <Window.Resources>
        <!--Create list of enumeration values-->
        <ObjectDataProvider x:Key="myEnum" MethodName="GetValues" ObjectType="{x:Type core:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type Type="local:PositionEnum"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <Grid>
        <DataGrid x:Name="MyDataGrid"
            AutoGenerateColumns="False"      
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            RowHeaderWidth="0" >
            <DataGrid.Columns>
                <DataGridTextColumn
                   Binding="{Binding Name}"
                   Header="Name" />
                <DataGridComboBoxColumn
                    Header="Order Status"
                    SelectedItemBinding="{Binding Position}"
                    ItemsSource="{Binding Source={StaticResource myEnum}}" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

enter image description here

लगता है कि आप की जरूरत करने के लिए के साथ खुद को परिचित MVVM पैटर्न का उपयोग करें और है कि के रूप में एक आधार के निर्माण के लिए इस तरह के अनुप्रयोगों.

2021-11-19 12:22:47

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में