我用combobox创建了datagrid(从DB读取数据),但需要修复一些问题,也许有人可以帮助我;)
首先,我在dataGrid中使用分组(按名称分组Wzór#),每次我想添加新元素时,它都显示在底部: http://i45.tinypic.com/2l8yarp.png [^] 是否有可能用这个(新的)项目创建类似“新组”的东西?例如: Wzór1 Wzór1niebieski22 1 1 1 Wzór1czerwony23 1 1 1 Wzór2 Wzór2czarny 55 1 1 1 添加新项目 ComboBox ComBox ComboBox TextBox TextBox TextBox(与图片中标记的完全相同)。我的意思是这样的想法: http://i45.tinypic.com/2s0ms90.png [^]
我发现的第二个问题是,当我添加新项目,并在ComboBox1,2或3中更改任何内容然后当我开始编辑任何文本框时,所有来自combobox的值消失 - 以任何方式解决它?
这是源代码(实际上它不是很复杂,我有3个方法,从数据库填充combobox1,combobox2和combobox3,然后点击按钮后我创建新的产品项目即时添加到列表中):
wzoryCount = wzoryCB.Items.Count;
List<Produkt> Produkty = new List<Produkt>();
// for (int i = 0; i < wzoryCount; i++)
//{
Produkt p = new Produkt { wzor = "", kolor = "", cena = 0, rozmiar = "", indeks = "", kod = "" };
Produkty.Add(p);
// }
dataGrid1.ItemsSource = Produkty;
ListCollectionView collection = new ListCollectionView(Produkty);
collection.GroupDescriptions.Add(new PropertyGroupDescription("wzor"));
dataGrid1.ItemsSource = collection;
我想,我需要在数据网格的beginEdit方法中做一些事情,但是当我把它放在messagebox中时,它在我改变组合框中的任何东西时都不会出现,但是当我改变文本框时就会出现。
感谢您的帮助!
答案 0 :(得分:0)
首先,您需要ObservableCollection,而不是List。 其次,您可以在xaml中执行此操作:
<DataGrid ItemsSource="{Binding Produkty}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="wzor">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding wzor}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="kolor">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding kolor}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="cena">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding cena}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="rozmiar">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding rozmiar}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="indeks">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding indeks}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="kod">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding kod}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:0)
评论太久了,所以在这里发帖不好。这是我在xaml中使用的代码,所以你的回答不起作用我猜
<DataGrid.Columns>
<!--<DataGridTextColumn Header="Wzór" Binding="{Binding Path=wzor}" ></DataGridTextColumn>-->
<DataGridTemplateColumn Header="Wzór">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{StaticResource wzoryList}" SelectedItem="{Binding wzor}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Kolor">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{StaticResource koloryList}" SelectedItem="{Binding kolor}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Rozmiar">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{StaticResource rozmiarList}" SelectedItem="{Binding rozmiar}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Indeks" Binding="{Binding Path=indeks}" ></DataGridTextColumn>
<DataGridTextColumn Header="Kod" Binding="{Binding Path=kod}"></DataGridTextColumn>
<DataGridTextColumn Header="Cena" Binding="{Binding Path=cena}" ></DataGridTextColumn>