0

我有一个DataGrid将数据插入到 Sql Server 表中。在里面DataGrid我必须ComboBox从密码本中挑选数据(这是来自同一数据库的表)并将这些数据插入到我绑定到的表中DataGrid。这是 XAML:

<DataGrid Name="dgrStavke" AutoGenerateColumns="False" Height="160" Width="600" HorizontalAlignment="Left" Margin="5" Grid.Row="7" Grid.ColumnSpan="4">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Artikl ID">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox Name="cmbArticle" Width="120" ></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>                    
            </DataGridTemplateColumn>
            <DataGridTextColumn Header="Article Name" Width="150"></DataGridTextColumn>
            <DataGridTemplateColumn Header="Usluga ID">
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox Name="cmbService" Width="120"></ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>
            <DataGridTextColumn Header="Service Name" Width="150"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

当我在组合框文章中选择文章 id 时,下一个DataGridTextColumn应该显示这篇文章的名称。服务也是如此。可以插入少量文章和服务,这就是我使用Datagrid.

我怎样才能做到这一点?

谢谢。

4

2 回答 2

0
((ComboBox)GRID.Columns[N].FindControl("cmbArticle")).COMBO-BOX-PROPERTY

这是正确的语法吗?我不知道,我认为您正在寻找类似的东西。

于 2013-01-21T13:37:28.677 回答
0

我想下面的示例将帮助您实现目标

在使用以下代码的 XAML 中,

<Window.Resources>
        <ObjectDataProvider x:Key="RecordValues" ObjectType="{x:Type local:RecordTemp}" MethodName="GetPersonList" >            
        </ObjectDataProvider>
    </Window.Resources>
    <Grid>
        <Grid>
            <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}"
                  Margin="10,10,73,155" Name="dataGrid1">
                <DataGrid.Columns>
                    <DataGridComboBoxColumn Header="Artikl ID" Width="300" 
                                            SelectedValueBinding="{Binding SelectedPart, UpdateSourceTrigger=PropertyChanged}"                                            
                                            DisplayMemberPath="ArticleID"
                     ItemsSource="{Binding Source={StaticResource RecordValues}}" />

                    <DataGridTextColumn Header="Order Name" Binding="{Binding SelectedPart.ArticleName}" />
                </DataGrid.Columns>
            </DataGrid>            
        </Grid>
    </Grid>

在下面使用的 C# 代码中,

public class RecordTemp : INotifyPropertyChanged
{
    List<PartsList> _value = new List<PartsList>();

   public RecordTemp()
    {
        _value.Add(new PartsList() { ArticleID = "1", ArticleName = "one - 1", ArticleQuantity = 20 });
        _value.Add(new PartsList() { ArticleID = "2", ArticleName = "Two - 2", ArticleQuantity = 10 });
    }

    public List<PartsList> GetPersonList()
    {
        return _value;
    }

    private PartsList _SelectedPart;

    public PartsList SelectedPart
    {
        get { return _SelectedPart; }
        set
        {
            _SelectedPart = value;
             OnPropertyChanged("SelectedPart");
        }
    }

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null  )
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }     


    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;



    #endregion
}

 public class PartsList
{
    public string ArticleID { get; set; }
    public double ArticleQuantity { get; set; }
    public string ArticleName { get; set; }
    }

在 MainWindow 中,下面的代码可以帮助绑定网格。

ObservableCollection<RecordTemp> RecordsTemp = new ObservableCollection<RecordTemp>();
RecordsTemp.Add(new RecordTemp());
RecordsTemp.Add(new RecordTemp());
dataGrid1.DataContext = RecordsTemp;   

如果您需要任何澄清,请发表评论。我会帮你

于 2013-01-24T12:21:35.557 回答