全て
| カテゴリ未分類
| 通常
| 数学
| 投資
| 副業
| 転職・就職
| ブログ
| 株Stock
| VBA
| SharePoint
| REST API
| RenderListDataAsStream
| PowerAutomateDesktop
| Graph API
| PowerApps
| PowerAutomate
| PowerFx
| OfficeScriptオフィススクリプト
| PowerAutomate日時Excel日時相互関係
| PowerShell
| Dataverse
| UiPath
| OneDrive
| LINQ
| VB.NET
| C#.NET
| WPFC#.NET
| Git
カテゴリ:C#.NET
以下は、WPFアプリケーションでICommandを使用してDataTableの更新を実装するサンプルコードです。 ```csharp using System; using System.Collections.ObjectModel; using System.Data; using System.Data.SqlClient; using System.Windows; using System.Windows.Input; namespace WpfDataTableUpdate { public class MainViewModel : ViewModelBase { private readonly string _connectionString = "YourConnectionString"; private readonly string _selectQuery = "SELECT * FROM YourTable"; private readonly string _updateQuery = "UPDATE YourTable SET Column1 = @Column1, Column2 = @Column2 WHERE Id = @Id"; private DataTable _dataTable; public DataTable DataTable { get { return _dataTable; } set { _dataTable = value; OnPropertyChanged(nameof(DataTable)); } } public ICommand UpdateCommand { get; } public MainViewModel() { UpdateCommand = new RelayCommand(Update); // Load data initially LoadData(); } private void LoadData() { using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = new SqlCommand(_selectQuery, connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); DataTable = dataTable; } } private void Update(object parameter) { DataRow row = parameter as DataRow; if (row != null) { using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = new SqlCommand(_updateQuery, connection); command.Parameters.AddWithValue("@Column1", row["Column1"]); command.Parameters.AddWithValue("@Column2", row["Column2"]); command.Parameters.AddWithValue("@Id", row["Id"]); connection.Open(); command.ExecuteNonQuery(); } } } } public class RelayCommand : ICommand { private readonly Action<object> _execute; private readonly Func<bool> _canExecute; public RelayCommand(Action<object> execute, Func<bool> canExecute = null) { _execute = execute ?? throw new ArgumentNullException(nameof(execute)); _canExecute = canExecute; } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public bool CanExecute(object parameter) { return _canExecute == null || _canExecute(); } public void Execute(object parameter) { _execute(parameter); } } } ``` ```xml <Window x:Class="WpfDataTableUpdate.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfDataTableUpdate" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Window.DataContext> <local:MainViewModel/> </Window.DataContext> <Grid> <DataGrid ItemsSource="{Binding DataTable}" AutoGenerateColumns="True"/> <Button Content="Update" Command="{Binding UpdateCommand}" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="10"/> </Grid> </Window> ``` このサンプルでは、ViewModel内でDataTableをロードし、DataGridにバインドして表示します。また、UpdateCommandを実装して、DataRowの更新が行われた際にデータベースを更新します。 RelayCommandは、ICommandの実装を提供します。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2024.03.31 18:05:14
[C#.NET] カテゴリの最新記事
|