У меня есть DataGrid, подключенный к базе данных SQL. Я могу показать в одной строке данные, связанные с идентификатором, хочу выбрать эту строку, щелкнув по ней, и через btnSave
сохранить содержимое этой строки в файл .txt. Возможно ли это?
Ниже XAML для моей DataGrid:
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" Margin="0,54,0,31" x:Name="STable" IsReadOnly="True" VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="False" ColumnWidth="Auto">
<DataGrid.Columns>
<DataGridTextColumn x:Name="StatTableNItemColumn" Header="N" Binding="{Binding NItem, BindsDirectlyToSource=True}" />
<DataGridTextColumn x:Name="StatTablePSEColumn" Header="P" Binding="{Binding P, BindsDirectlyToSource=True}" />
<DataGridTextColumn x:Name="StatTableDStartColumn" Header="Start" HeaderStringFormat="dd-MM-yyyy" Binding="{Binding DStart, BindsDirectlyToSource=True, StringFormat=\{0:dd-MM-yyyy\}}"/>
<DataGridTextColumn x:Name="StatTableDEndSEColumn" Header="End" HeaderStringFormat="dd-MM-yyyy" Binding="{Binding DEnd, StringFormat=\{0:dd-MM-yyyy\}}" />
<DataGridTextColumn x:Name="StatTableRItemColumn" Header="R" Binding="{Binding RItem}" />
<DataGridTextColumn x:Name="StatTableRepColumn" Header="Rep" Binding="{Binding Rep}" />
</DataGrid.Columns>
Это код моего btnSave.OnClick
обработчика событий:
private void BtnSaveStat_Click(object sender, RoutedEventArgs e)
{
if (StatTable.SelectedItem == null)
return;
var itemSelected = StatTable.SelectedItem;
if (!Directory.Exists(@"D:/ReportStatistics"))
{
Directory.CreateDirectory(@"D:/ReportStatistics");
}
try
{
sqliteCon.Open();
var filename = string.Concat("Filename", DateTime.Now.ToString("ddMMyyHHmmss"), ".txt");//THIS STRING ALLOW TO BUILD FILES EVERY TIME THE USER CHANGE ITEM AND WANTO TO PRINT IT
//DONE: SAVE PER ID
string query =
@"SELECT tabS.NItem
FROM tabS
WHERE tabS.NItem LIKE @prmNome";
using (SqlCommand command = new SqlCommand(query, sqliteCon))
{
command.Parameters.AddWithValue("@prmNome", this.txtSrcVR.Text);
using (var reader = command.ExecuteReader())
{
string file = Path.Combine(@"D:\Reports", filename);
using (TextWriter tw1 = new StreamWriter(file, true))
{
while (reader.Read())
{
string datoN = Convert.ToString(reader[0]);
tw1.WriteLine(datoN);
}
}
}
}
MessageBox.Show("File Created Successfully");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
sqliteCon.Close();
}