我有一个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
的原因。
我该怎么做?
感谢。
答案 0 :(得分:0)
((ComboBox)GRID.Columns[N].FindControl("cmbArticle")).COMBO-BOX-PROPERTY
这是正确的语法吗?我不知道,我认为你正在寻找类似的东西。
答案 1 :(得分: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;
请评论如果您需要任何澄清。我会帮你的