【发布时间】:2021-05-09 09:02:22
【问题描述】:
我正在尝试使用单击事件 som add in datagrid 列将我的 wpf userList(a user control) 中的 datagrid 转换为 userUpdate(usercontrol)。
更新视图显示来自数据网格的信息,但是当我尝试使用 sql 查询按 id 更新信息时,查询找不到 id。
我正在使用 MVVM
这里是代码。
private void Update_Click(object sender, RoutedEventArgse)
{
update = new UpdateUser();
var row = userList.SelectedItem;
var user = (Users)row;
update.id.Content = user.id.ToString();
btnAdd.Children.Clear();
gridData.Children.Clear();
gridData.Children.Add(update);
}
和我的数据网格 XAML
<DataGrid x:Name="userList" AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding Path=UserList}" Background="#FFF" >
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="*" Binding="{Binding id}" />
<DataGridTextColumn Header="First name" Width="*" Binding="{Binding Firstname}" />
<DataGridTextColumn Header="Last name" Width="*" Binding="{Binding Lastname}" />
<DataGridTextColumn Header="Username" Width="*" Binding="{Binding Username}" />
<DataGridTextColumn Header="Email" Width="*" Binding="{Binding Email}" />
<DataGridTextColumn Header="Corporation" Width="*" Binding="{Binding CorName}" />
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="Update" Background="#FF17A2B8" BorderBrush="#FF17A2B8" Foreground="White" Click="Update_Click" >Update</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnDelete" Background="#FFDA0202" BorderBrush="#FFDA0202" Foreground="White" Click="btnDelete_Click">Delete</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这是我的更新用户控件
<Grid Grid.Row="1" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Column="1" Grid.Row="9" Margin="10">
<TextBox x:Name="fsdName" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="First Name" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="1" Margin="10">
<TextBox x:Name="fName" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="First Name" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="2" Margin="10">
<TextBox x:Name="lName" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="Last Name" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="3" Margin="10">
<TextBox x:Name="username" Text="{Binding Path=CurrentUser.Username,Mode=TwoWay}" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="User Name" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="9" Margin="10">
<TextBox x:Name="usesdfrname" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="User Name" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="4" Margin="10">
<PasswordBox x:Name="Password" Style="{StaticResource MaterialDesignOutlinedPasswordBox}" materialDesign:HintAssist.Hint="Password" BorderBrush="#89000000" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="6" Margin="10">
<TextBox x:Name="Email" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="E-mail" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="7" Margin="10">
<TextBox x:Name="tel" Style="{StaticResource MaterialDesignOutlinedTextBox}" VerticalAlignment="Top" AcceptsReturn="True" TextWrapping="Wrap" materialDesign:HintAssist.Hint="Telefon" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="8" Margin="10">
<Button x:Name="Update" Style="{StaticResource MaterialDesignRaisedAccentButton}" ToolTip="Resource name: MaterialDesignRaisedAccentButton" materialDesign:RippleAssist.IsDisabled="True" Content="Update user" Width="173" Background="#FF1B8524" Command="{Binding Path=UpdateCommand}" BorderBrush="#FF1B8524" Foreground="#DDFFFFFF" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
<Label Grid.Column="0" x:Name="id" HorizontalAlignment="Left" Grid.Row="1" VerticalAlignment="Top"/>
<Label Content="{Binding Path=Message}" Grid.Column="1" HorizontalAlignment="Left" Grid.Row="1" VerticalAlignment="Top"/>
</Grid>
所以我需要从 userList 控件中的 datagrid 到 userUpdate 控件的 id,我不知道这是否可能,但请尝试:D
非常感谢
【问题讨论】: