Click here to Skip to main content
15,886,963 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am working with DataGrid with, in which i am binding the Observable collection to data. and when i double click on grid cell, and type something in grid cell, then all rows in data grid for current cell getting updated with entered text:

please review below code:

when i double clicked on Barcode column and start typing then all rows in grid. getting update the barcode column data.

What I have tried:

<DataGrid MaxHeight="200"  Name="GridAssetSubclass" RowHeight="{x:Static sys:Double.NaN}"

                   Style="{StaticResource datagrid-default}"
               ItemsSource="{Binding RecoveryItems}" >
    <DataGrid.Columns>
        <DataGridTextColumn Header="Id" Binding="{Binding AssetClassID, Mode=TwoWay}" IsReadOnly="true"  HeaderStyle="{StaticResource data-grid-column-header}"></DataGridTextColumn>
        <DataGridTextColumn Header="SKU" Binding="{Binding SKU, Mode=TwoWay}" IsReadOnly="true"   HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                    <!--<Setter Property="IsEnabled"  Value="{Binding Enabled}" />-->
                    <Setter Property="BorderThickness"  Value="0" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>


        <DataGridTextColumn  Header="Grade" Binding="{Binding GradeID}" IsReadOnly="True" HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

        <DataGridTextColumn  Header="Pallet" Binding="{Binding Pallet}" HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

        <DataGridTextColumn  Header="Barcode" Binding="{Binding ItemBarcode,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

        <DataGridTextColumn  Header="Serial" Binding="{Binding SerialNbr}" HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

        <DataGridTextColumn  Header="Asset" Binding="{Binding AssetTag}" HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

        <DataGridTemplateColumn MaxWidth="100"  Header="Action Audit" HeaderStyle="{StaticResource data-grid-column-header}" >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <DockPanel>
                        <Button  Content="Audit" Style="{StaticResource btn-Action-Audit}"  Command="{Binding Path=DataContext.HardkillFlyoutCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding ItemBarcode}"></Button>
                    </DockPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>


        </DataGridTemplateColumn>
        <DataGridTemplateColumn MaxWidth="100"  Header="Action Grading" HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <DockPanel>
                        <Button  Content="Grading" Style="{StaticResource btn-Action-Grading}" Command="{Binding Path=DataContext.HarvestFlyoutCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding ItemBarcode}"  ></Button>
                    </DockPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTextColumn  Header="Comment" Binding="{Binding GradingCommentValue}" HeaderStyle="{StaticResource data-grid-column-header}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="Margin" Value="3,0"/>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.TextAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

    </DataGrid.Columns>

    <!--<i:Interaction.Triggers>
        <i:EventTrigger EventName="CellEditEnding">
            <cmd:EventToCommand Command="{Binding CellEditEndingCommand}" PassEventArgsToCommand="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>-->

</DataGrid>
Posted
Comments
[no name] 2-Apr-21 0:04am    
Why are you double-clicking that column? It's possibly doing a select on the column, and therefore selecting all the rows for input.
Member 10371658 2-Apr-21 1:59am    
yes, it's possible to select on the column, in that case also when type some in first row cell then all other row in grid cell value getting change.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900