Я сейчас работаю над проектом и использую SQL Сервер, Linq, хранимые процедуры и WPF.
Я хочу сделать обновление напрямую из сетки данных, но я не сделал этого, поэтому я попытался обновить данные, вставив их в текстовые поля, что было плохой идеей, поскольку обновлялись все строки с одинаковыми значениями.
Вот мой код, может быть, вы можете мне помочь, я боролся с много с этим.
<Page x:Name="x" x:Class="Project"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Project"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="850"
Title="Test">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="83*"/>
<RowDefinition Height="67*"/>
</Grid.RowDefinitions>
<DataGrid x:Name="dataGridViewDevices" HorizontalAlignment="Left" Height="298" VerticalAlignment="Top" Width="639" Margin="0,142,0,0" RowBackground="#FFF3C1D6" FontWeight="Bold" Background="#FFF3C1D6" Grid.RowSpan="2" CellEditEnding="dataGridViewAparate_CellEditEnding"/>
<Button x:Name="listDevices" Content="Select" HorizontalAlignment="Left" Margin="671,35,0,0" VerticalAlignment="Top" Width="75" Click="listDevices_Click" Grid.Row="1" Background="#FFECA6C3" FontWeight="Bold"/>
<Button x:Name="btnInsertDevice" Content="Insert " HorizontalAlignment="Left" Margin="671,76,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Background="#FFECA6C3" FontWeight="Bold" Click="btnInsertDevice_Click" RenderTransformOrigin="0.993,0.525"/>
<Label x:Name="lblDeviceName" Content="Device" HorizontalAlignment="Left" Margin="25,39,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtDeviceName" HorizontalAlignment="Left" Height="23" Margin="123,43,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="379"/>
<Label x:Name="lblDescription" Content="Description" HorizontalAlignment="Left" Margin="25,89,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtDescription" HorizontalAlignment="Left" Height="23" Margin="123,92,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="379"/>
<Button x:Name="btnUpdateDevice" Content="Update" HorizontalAlignment="Left" Margin="671,116,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Background="#FFECA6C3" FontWeight="Bold" Click="btnUpdateDevice_Click"/>
</Grid>
</Page>
Вот моя функция из класса, где я вызываю хранимую процедуру:
public void updateDevice()
{
if (dc.DatabaseExists())
{
var s = dc.spAparat_UpdateDevice(txtDeviceName.Text, txtDescription.Text);
}
dc.SubmitChanges();
MessageBox.Show("Data successfully updated!");
}
Вот моя хранимая процедура:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spDevice_UpdateDevice]
(@Name varchar(max),
@Description varchar(max))
AS
BEGIN
UPDATE Device
SET Name = @Name, Description = @Description
END